Android中怎么利用Gallery實現(xiàn)多級聯(lián)動

今天就跟大家聊聊有關Android中怎么利用Gallery實現(xiàn)多級聯(lián)動,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都做網(wǎng)站、成都網(wǎng)站設計服務團隊是一支充滿著熱情的團隊,執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標準與要求,同時竭誠為客戶提供服務是我們的理念。創(chuàng)新互聯(lián)把每個網(wǎng)站當做一個產(chǎn)品來開發(fā),精雕細琢,追求一名工匠心中的細致,我們更用心!

Gallery布局

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

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

Gallery的適配器

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

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

Activity

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

看完上述內(nèi)容,你們對Android中怎么利用Gallery實現(xiàn)多級聯(lián)動有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)站欄目:Android中怎么利用Gallery實現(xiàn)多級聯(lián)動
路徑分享:http://bm7419.com/article32/pcdcpc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站收錄云服務器、App設計、App開發(fā)、網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設