精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在Android開發中使用Gallery實現“多級聯動”

移動開發 Android
本文將講解利用兩個Gallery實現類似多級聯動的功能,在UI設計中需要利用很多圖庫相冊軟件,Gallery是國外一個免費開源的、功能非常強大、有豐富的擴展圖庫相冊軟件。

之前我們曾向您介紹過在Android中實現service動態更新UI界面,在UI設計中需要利用很多圖庫相冊軟件,而Gallery 是國外一個免費開源的、功能非常強大、有豐富的擴展圖庫相冊軟件。本文將講解利用兩個Gallery實現類似多級聯動的功能。

device

一個Gallery是歌曲專輯圖片,另一個Gallery是專輯的歌曲。滑動專輯Gallery,下面的歌曲也會隨之發生變動。

Gallery布局

主要的布局是有兩個相對布局+兩個Gallery組成的:

  1.  1: <?xml version="1.0" encoding="utf-8"?> 
  2.  2: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.  3:     android:layout_width="fill_parent"   
  4.  4:     android:layout_height="fill_parent">   
  5.  5:     <!-- 專輯 --> 
  6.  6:     <Gallery android:id="@+id/gallery" 
  7.  7:         android:layout_width="fill_parent" 
  8.  8:         android:layout_height="wrap_content" 
  9.  9:         android:layout_alignParentTop="true" 
  10. 10:         android:gravity="center_horizontal" 
  11. 11:         android:spacing="16dp" 
  12. 12:         android:unselectedAlpha="0.5"/> 
  13. 13:     <!-- 歌曲 --> 
  14. 14:     <Gallery android:id="@+id/gallery2" 
  15. 15:         android:background="#FFF" 
  16. 16:         android:layout_width="fill_parent" 
  17. 17:         android:layout_height="30dp" 
  18. 18:         android:layout_below="@id/gallery" 
  19. 19:         android:layout_alignParentLeft="true" 
  20. 20:         android:gravity="center_vertical" 
  21. 21:         android:spacing="16dp" 
  22. 22:         android:unselectedAlpha="0.5" /> 
  23. 23: </RelativeLayout> 

Gallery的適配器

在android中適配器很好的實現了MVC思想,它很好的為某些組件提供了數據和view的實現。此處我們需要通過繼承BaseAdapter,實現兩個Gallery的適配器。
 

  1.  1: /**  
  2.  2:  * 專輯  
  3.  3:  *   
  4.  4:  * @author halzhang  
  5.  5:  */  
  6.  6: public class AlbumAdapter extends BaseAdapter {  
  7.  7:    
  8.  8:     private Context context;  
  9.  9:    
  10. 10:     private Cursor cursor;  
  11. 11:    
  12. 12:     private Bitmap[] bitmaps;  
  13. 13:    
  14. 14:     public AlbumAdapter(Context context) {  
  15. 15:         this.context = context;  
  16. 16:         this.cursor = context.getContentResolver().query(  
  17. 17:                 MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, null, null, null,  
  18. 18:                 MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);  
  19. 19:         bitmaps = new Bitmap[cursor.getCount()];  
  20. 20:         initBitmaps();  
  21. 21:     }  
  22. 22:    
  23. 23:     /**  
  24. 24:      * 初始化專輯封面圖片  
  25. 25:      */  
  26. 26:     private void initBitmaps() {  
  27. 27:         if (cursor.moveToFirst()) {  
  28. 28:             do {  
  29. 29:                 bitmaps[cursor.getPosition()] = MusicUtils.getArtwork(context, -1, cursor  
  30. 30:                         .getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums._ID)));  
  31. 31:             } while (cursor.moveToNext());  
  32. 32:         }  
  33. 33:     }  
  34. 34:    
  35. 35:     public int getCount() {  
  36. 36:         if (cursor != null) {  
  37. 37:             return cursor.getCount();  
  38. 38:         }  
  39. 39:         return 0;  
  40. 40:     }  
  41. 41:    
  42. 42:     public Object getItem(int position) {  
  43. 43:         return position;  
  44. 44:     }  
  45. 45:    
  46. 46:     public long getItemId(int position) {  
  47. 47:         if (cursor != null) {  
  48. 48:             cursor.moveToPosition(position);  
  49. 49:             return cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums._ID));  
  50. 50:         }  
  51. 51:         return 0;  
  52. 52:     }  
  53. 53:    
  54. 54:     public View getView(int position, View convertView, ViewGroup parent) {  
  55. 55:         ImageView iv = new ImageView(context);  
  56. 56:         iv.setLayoutParams(new Gallery.LayoutParams(100, 100));  
  57. 57:         iv.setAdjustViewBounds(true);  
  58. 58:         iv.setImageBitmap(bitmaps[position]);  
  59. 59:         return iv;  
  60. 60:     }  
  61. 61:    
  62. 62: }  
  1.  1: /**  
  2.  2:  * 歌曲  
  3.  3:  *   
  4.  4:  * @author halzhang  
  5.  5:  */  
  6.  6: public class AudioAdapter extends BaseAdapter {  
  7.  7:    
  8.  8:     private Context context;  
  9.  9:    
  10. 10:     private Cursor cursor;  
  11. 11:     /**專輯ID*/  
  12. 12:     private int albumId;  
  13. 13:    
  14. 14:     public AudioAdapter(Context context, int albumId) {  
  15. 15:         this.context = context;  
  16. 16:         this.albumId = albumId;  
  17. 17:         this.cursor = context.getContentResolver().query(  
  18. 18:                 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,  
  19. 19:                 MediaStore.Audio.Media.ALBUM_ID + "=" + albumId, null,  
  20. 20:                 MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  
  21. 21:     }  
  22. 22:    
  23. 23:     public int getCount() {  
  24. 24:         if (cursor != null) {  
  25. 25:             return cursor.getCount();  
  26. 26:         }  
  27. 27:         return 0;  
  28. 28:     }  
  29. 29:    
  30. 30:     public Object getItem(int position) {  
  31. 31:         return position;  
  32. 32:     }  
  33. 33:    
  34. 34:     public long getItemId(int position) {  
  35. 35:         if (cursor != null) {  
  36. 36:             cursor.moveToPosition(position);  
  37. 37:             return cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));  
  38. 38:         }  
  39. 39:         return 0;  
  40. 40:     }  
  41. 41:    
  42. 42:     public View getView(int position, View convertView, ViewGroup parent) {  
  43. 43:         cursor.moveToPosition(position);  
  44. 44:         TextView t = new TextView(context);  
  45. 45:         String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));  
  46. 46:         t.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,  
  47. 47:                 LayoutParams.WRAP_CONTENT));  
  48. 48:         t.setText(title);  
  49. 49:         t.setTextColor(Color.BLACK);  
  50. 50:         return t;  
  51. 51:     }  
  52. 52:    
  53. 53:     /**  
  54. 54:      * 當專輯改變了,調用此方法更新adapter的數據  
  55. 55:      * @param albumId 專輯ID  
  56. 56:      */  
  57. 57:     public void notifyDataSetChanged(int albumId) {  
  58. 58:         this.cursor = context.getContentResolver().query(  
  59. 59:                 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,  
  60. 60:                 MediaStore.Audio.Media.ALBUM_ID + "=" + albumId, null,  
  61. 61:                 MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  
  62. 62:         super.notifyDataSetChanged();  
  63. 63:     }  
  64. 64:    
  65. 65: }  

Activity

  1.  1: public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {  
  2.  2:    
  3.  3:     private Gallery album;  
  4.  4:    
  5.  5:     private Gallery audio;  
  6.  6:    
  7.  7:     private AlbumAdapter albumAdapter;  
  8.  8:    
  9.  9:     private AudioAdapter audioAdapter;  
  10. 10:    
  11. 11:     @Override  
  12. 12:     protected void onCreate(Bundle savedInstanceState) {  
  13. 13:         super.onCreate(savedInstanceState);  
  14. 14:         setContentView(R.layout.audio_player);  
  15. 15:         setupViews();  
  16. 16:     }  
  17. 17:    
  18. 18:     // 個人習慣  
  19. 19:     private void setupViews() {  
  20. 20:         album = (Gallery) findViewById(R.id.gallery);  
  21. 21:         audio = (Gallery) findViewById(R.id.gallery2);  
  22. 22:    
  23. 23:         albumAdapter = new AlbumAdapter(this);  
  24. 24:    
  25. 25:         album.setAdapter(albumAdapter);  
  26. 26:    
  27. 27:         int aid = (int) albumAdapter.getItemId(0);  
  28. 28:    
  29. 29:         audioAdapter = new AudioAdapter(this, aid);  
  30. 30:         audio.setAdapter(audioAdapter);  
  31. 31:    
  32. 32:         audio.setOnItemSelectedListener(this);  
  33. 33:         album.setOnItemSelectedListener(this);  
  34. 34:     }  
  35. 35:    
  36. 36:     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {  
  37. 37:         if (parent == album) {  
  38. 38:             // 專輯被選中  
  39. 39:             int aid = (int) albumAdapter.getItemId(position);  
  40. 40:             // 更新歌曲Gallery  
  41. 41:             audioAdapter.notifyDataSetChanged(aid);  
  42. 42:         } else if (parent == audio) {  
  43. 43:             // TODO do something  
  44. 44:         }  
  45. 45:    
  46. 46:     }  
  47. 47:    
  48. 48:     public void onNothingSelected(AdapterView<?> parent) {  
  49. 49:    
  50. 50:     }  

好了,這就是我們介紹的在Android開發中使用Gallery實現“多級聯動”的教程,謝謝大家。

【編輯推薦】

  1. 在Android中實現service動態更新UI界面
  2. Android的UI設計與后臺線程交互
  3. 有效控制Android應用程序的耗電量
  4. 在Android上實現Junit單元測試的四部曲
  5. Android數據庫事務淺析

 

責任編輯:佚名 來源: 博客園
相關推薦

2023-12-22 09:11:45

AndroidNFC移動開發

2024-04-30 11:02:15

二級聯動鴻蒙開源

2020-07-07 09:19:28

Android 協程開發

2020-04-08 09:06:34

Android 協程開發

2018-03-26 14:25:55

KubernetesSkaffold命令

2012-04-19 12:58:26

TitaniumJSS

2020-04-23 09:33:32

Android 協程開發

2011-04-19 17:24:09

JavaScript二級聯動下拉框

2009-07-16 14:22:02

Windows Emb

2010-01-28 17:07:03

Android Gal

2011-08-18 13:58:34

iPhone開發NSOperation異步

2013-06-25 11:21:35

Android開發幻燈片效果Gallery

2012-12-27 13:04:17

Android開發SQLite數據庫

2022-06-07 19:48:07

TraefikProxy插件

2012-02-13 14:22:22

MonoTouchiOS應用Visual Stud

2009-12-09 16:42:55

PHP二級聯動菜單

2009-06-25 16:49:24

Hibernate

2013-12-13 17:21:14

Lua腳本語言

2023-11-17 12:04:39

GORM并發
點贊
收藏

51CTO技術棧公眾號

日韩高清人体午夜| 好吊成人免视频| 粉嫩av四季av绯色av第一区| 久久久久久久极品内射| 欧美男男freegayvideosroom| 欧美日韩中文在线| 在线视频不卡国产| 四虎电影院在线观看| 麻豆专区一区二区三区四区五区| 欧美成人在线影院| 日本黄色网址大全| 成人污污视频| 欧美性猛交xxxx黑人| 99精品一级欧美片免费播放| 性xxxxbbbb| 国产在线精品一区二区不卡了| 久久久久亚洲精品| 蜜桃视频最新网址| 午夜欧洲一区| 日韩欧美国产系列| 亚洲xxx在线观看| 亚洲欧美小说色综合小说一区| 国产精品久久久久aaaa| 国内精品久久国产| 99热这里只有精品9| 日韩激情一二三区| 88国产精品欧美一区二区三区| 777777国产7777777| 综合国产视频| 亚洲成成品网站| www.桃色.com| 成人免费一区| 日本乱码高清不卡字幕| 男女超爽视频免费播放| 91精品国产91久久久久久青草| 国产欧美日韩三区| 蜜桃传媒视频麻豆一区 | 欧美一激情一区二区三区| 一本久道综合色婷婷五月| 国内在线免费视频| 一区二区欧美国产| 丰满人妻一区二区三区53号| 日韩理伦片在线| 欧美国产综合色视频| 欧美日本亚洲| 色视频在线观看| 99久久精品国产毛片| 国产精品污www一区二区三区| 国产三级在线观看视频| 国产综合久久久久久久久久久久| 国产精品美女999| 国产亚洲欧美日韩高清| 玖玖精品视频| 国产精品v片在线观看不卡| 久久青青草原亚洲av无码麻豆| 国产精品二区影院| 欧美大奶子在线| 日韩va亚洲va欧美va清高| 999国产精品永久免费视频app| 亚洲人成电影网站色| 91精品人妻一区二区| 蜜乳av综合| 中文字幕精品网| 天堂网中文在线观看| 91欧美大片| 欧美成人午夜激情在线| 欧美日韩大片在线观看| 影音先锋中文字幕一区二区| 午夜欧美不卡精品aaaaa| 精品在线播放视频| 久久大逼视频| 国产精品毛片a∨一区二区三区|国| 在线视频欧美亚洲| 国产真实精品久久二三区| 亚洲在线免费看| 国产香蕉在线观看| 久久众筹精品私拍模特| 视频一区亚洲| 在线观看午夜av| 狠狠干狠狠久久| 一本岛在线视频| 日韩视频一区二区三区四区| 亚洲国产精品va在线| japanese中文字幕| 亚洲成人av| 97精品免费视频| 国产成人精品一区二区色戒| 国产在线视视频有精品| 国产日韩在线一区二区三区| 韩国中文字幕2020精品| 亚洲天堂网中文字| 欧美不卡在线播放| 成人在线视频免费| 精品国产123| 色欲AV无码精品一区二区久久 | 久久尤物电影视频在线观看| 亚洲午夜激情| 麻豆免费在线| 欧美久久一区二区| free性中国hd国语露脸| 久久在线播放| 欧美一二三视频| 国产喷水吹潮视频www| 91亚洲精品乱码久久久久久蜜桃| 亚洲一二区在线| 国产激情在线播放| 欧美丰满美乳xxx高潮www| 欧美肉大捧一进一出免费视频| 欧美视频网址| 97视频在线观看播放| 一级特黄色大片| 91久色porny| 在线观看污视频| 国产一区二区三区四区五区3d| 亚洲成人三级在线| www.5588.com毛片| 久久午夜激情| 精品国产福利| 天天色天天射天天综合网| 欧美色图第一页| 欧美老熟妇乱大交xxxxx | 国产最新精品视频| 国产精品视频久久久久久| 久久精品一二三| 少妇高潮毛片色欲ava片| 国产美女亚洲精品7777| 中文字幕日本欧美| 亚洲男人天堂网址| 99riav久久精品riav| 欧美美女黄色网| 日韩综合av| 在线视频日韩精品| 亚洲天堂五月天| 97久久精品人人爽人人爽蜜臀| 欧美a级免费视频| 亚洲一区有码| zzjj国产精品一区二区| 瑟瑟视频在线免费观看| 国产亚洲一区二区三区在线观看| 免费看又黄又无码的网站| 成人午夜三级| 欧美激情三级免费| 亚洲第一大网站| 亚洲毛片av在线| 国产5g成人5g天天爽| 久久中文字幕二区| 91精品国产自产在线观看永久| eeuss影院在线观看| 日本高清不卡在线观看| 欧美偷拍一区二区三区| 久久久人人人| 日韩高清国产精品| 久久国内精品| 欧美www在线| 亚洲av永久纯肉无码精品动漫| 一区二区三区精品在线| 特级特黄刘亦菲aaa级| 在线观看日韩av电影| 国产精品二区三区| 九色porny视频在线观看| 日韩精品在线观看视频| 天天干天天干天天操| 久久久久国产精品麻豆| 视频在线观看免费高清| 婷婷激情综合| 产国精品偷在线| 成av人片在线观看www| 日韩av最新在线| 中文字幕免费观看| 国产精品久久久久久久久果冻传媒| 99热一区二区| 欧美精品午夜| 久久久久久国产精品免费免费| 亚洲女同av| 综合欧美国产视频二区| 国产日韩欧美视频在线观看| 亚洲狠狠爱一区二区三区| 日韩av一二区| 老司机精品视频在线| 黄色一级大片免费| 天堂av一区二区三区在线播放| 国产精品国产亚洲伊人久久| 免费黄色在线网站| 亚洲大胆美女视频| 欧美日韩 一区二区三区| 一区二区在线观看免费视频播放| 国产精品无码一区二区三| 奇米影视在线99精品| 法国空姐在线观看免费| 日韩精品丝袜美腿| 国产一区二区丝袜| av电影在线免费| 在线观看欧美日韩国产| 亚洲精品一区二区三区新线路| 欧美午夜片在线免费观看| 91高清免费观看| 久久亚洲一级片| 激情小说欧美色图| 免费亚洲电影在线| 欧美,日韩,国产在线| 99精品在线| 欧美激情国产日韩| 136福利精品导航| 国产精品黄视频| yellow字幕网在线| 欧美成人免费全部| av在线电影免费观看| 精品福利av导航| 亚洲视频一区在线播放| 好吊成人免视频| 国产在线视频卡一卡二| 成人欧美一区二区三区小说| 黄色国产在线观看| 粉嫩蜜臀av国产精品网站| 天天视频天天爽| 国产欧美日韩亚洲一区二区三区| 一级全黄肉体裸体全过程| 久久不见久久见中文字幕免费| 91视频婷婷| 91精品福利观看| 国产精品盗摄久久久| 99热99re6国产在线播放| 久久亚洲欧美日韩精品专区| 国产片在线观看| 亚洲精品av在线| 亚洲黄色a级片| 日韩一区二区免费高清| 怡春院在线视频| 色综合久久中文字幕综合网| 日韩 国产 在线| 亚洲一区二区视频在线观看| 久久精品一区二区三区四区五区| 国产欧美一区二区精品仙草咪 | 国产精品久久久久9999吃药| 国产综合精品在线| 久久久www免费人成精品| 亚洲AV无码国产精品| www.性欧美| 国产视频精品视频| 成人午夜视频在线| 韩国三级在线看| 成人午夜精品一区二区三区| 亚洲熟女乱综合一区二区| 国产精品一区三区| 夜夜爽久久精品91| 国产成人在线看| 国产老头和老头xxxx×| 国产传媒日韩欧美成人| 中文字幕一区二区三区人妻在线视频| 国产美女久久久久| 欧美高清精品一区二区| 国产成人av自拍| 特级特黄刘亦菲aaa级| 成人白浆超碰人人人人| 日本黄色免费观看| 久久亚洲精精品中文字幕早川悠里| www.超碰97| 欧美激情一区二区三区蜜桃视频| 国产黄色大片免费看| 中文字幕二三区不卡| 欧美h片在线观看| 一区二区在线电影| 日韩在线观看第一页| 精品国产1区2区| 波多野结衣高清在线| 欧美男同性恋视频网站| 99久久国产热无码精品免费| 欧美mv日韩mv亚洲| 十九岁完整版在线观看好看云免费| 国产亚洲成av人片在线观看桃| 自拍视频在线网| 久久综合九色九九| 7777kkk亚洲综合欧美网站| 欧美在线亚洲一区| 亚洲青青一区| 国产午夜精品一区| 精品久久久久久久| 91免费版看片| 久久精品国语| 久久精品一卡二卡| 91日韩精品一区| 青青操在线视频观看| 午夜精品久久久久影视| 亚洲精品无码久久久久| 日韩一级免费观看| 你懂的视频在线| 久久九九国产精品怡红院| 欧美另类老肥妇| 成人久久精品视频| 午夜精品福利影院| 日本xxxxx18| 日韩制服丝袜av| 一级黄色免费视频| 国产精品毛片久久久久久| 毛片a片免费观看| 欧洲精品一区二区| 免费观看黄色一级视频| 视频直播国产精品| 色综合亚洲图丝熟| 亚洲自拍偷拍色图| 欧美特黄一级大片| 日韩精品―中文字幕| 国产美女视频91| 国产又粗又猛又爽又黄的视频四季 | 日韩高清一区在线| 熟女人妻一区二区三区免费看| 国产精品嫩草99a| 六月丁香激情综合| 精品美女在线播放| 九义人在线观看完整免费版电视剧| 欧美一级片久久久久久久| 日本少妇精品亚洲第一区| 亚洲欧美日韩不卡一区二区三区| 国产欧美一区二区三区国产幕精品| 小早川怜子一区二区三区| 欧美国产欧美综合| 日本在线播放视频| 亚洲成人黄色网址| 中文字幕在线三区| 91精品视频在线看| 成人3d动漫在线观看| 久久久噜噜噜www成人网| 国产·精品毛片| 国产女人被狂躁到高潮小说| 欧美午夜免费电影| 精品视频三区| 日韩av电影在线免费播放| 久久91在线| 久久国产精品网| 成人污视频在线观看| 国产这里有精品| 日韩一级欧美一级| 欧美精品videosex| 99精彩视频在线观看免费| 88国产精品视频一区二区三区| 国产三级三级看三级| 欧美激情综合在线| 少妇无套内谢久久久久| 国产亚洲成精品久久| 欧美日韩不卡| 色综合久久久久久久久五月| 日韩国产欧美在线播放| 性の欲びの女javhd| 欧洲亚洲精品在线| 阿v免费在线观看| 国产精品视频在线播放| 手机亚洲手机国产手机日韩| 五月婷婷六月合| 亚洲欧洲性图库| 国产美女免费看| 欧美精品亚州精品| 国产精品sss在线观看av| 黄页网站大全在线观看| 久久综合网色—综合色88| 黄色片视频免费| 最好看的2019年中文视频| 99精品女人在线观看免费视频 | 蜜臀av性久久久久蜜臀aⅴ| 少妇太紧太爽又黄又硬又爽小说| 欧美日韩精品一区视频| av在线导航| 国产精品日韩欧美一区二区三区 | 99久久99久久精品国产片桃花| 亚洲一区精品视频在线观看| 亚洲欧美偷拍卡通变态| 农村少妇久久久久久久| 日本一区二区三区在线播放| 日韩大片在线| 国产chinesehd精品露脸| 欧美日韩国产一区在线| yiren22综合网成人| 亚洲一区二区三区sesese| 影音先锋一区| www.99热| 精品福利一区二区三区| 澳门av一区二区三区| 熟妇熟女乱妇乱女网站| 成人av网站免费| 中文字幕久久熟女蜜桃| 欧美乱大交xxxxx| 免费欧美一区| 亚洲网中文字幕| 欧美性黄网官网| 精品国产99久久久久久| 黄色小网站91| 老汉av免费一区二区三区| 国产在线综合网| 中文字幕亚洲一区二区三区五十路| 99精品在免费线中文字幕网站一区| 男人亚洲天堂网| 亚洲情趣在线观看| 欧美少妇另类| 97超级碰碰| 免费不卡在线视频| 日韩成年人视频| 久久天天躁狠狠躁夜夜躁| 亚州综合一区| 又大又长粗又爽又黄少妇视频| 欧美综合天天夜夜久久| av手机在线观看|