Android中怎么利用Gallery实现多级联动

今天就跟大家聊聊有关Android中怎么利用Gallery实现多级联动,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都做网站、成都网站设计服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!

Gallery布局

主要的布局是有两个相对布局+两个Gallery组成的:

 1:   2:     5:       6:      13:      14:      23: 

Gallery的适配器

在android中适配器很好的实现了MVC思想,它很好的为某些组件提供了数据和view的实现。此处我们需要通过继承BaseAdapter,实现两个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:      * 当专辑改变了,调用此方法更新adapter的数据  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:     }

看完上述内容,你们对Android中怎么利用Gallery实现多级联动有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


分享标题:Android中怎么利用Gallery实现多级联动
转载来源:http://ybzwz.com/article/pcdcpc.html