今天就跟大家聊聊有關(guān)Android中怎么利用Gallery實(shí)現(xiàn)多級聯(lián)動,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
主要的布局是有兩個(gè)相對布局+兩個(gè)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>
在android中適配器很好的實(shí)現(xiàn)了MVC思想,它很好的為某些組件提供了數(shù)據(jù)和view的實(shí)現(xiàn)。此處我們需要通過繼承BaseAdapter,實(shí)現(xiàn)兩個(gè)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: * 當(dāng)專輯改變了,調(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: }
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: // 個(gè)人習(xí)慣 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實(shí)現(xiàn)多級聯(lián)動有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
網(wǎng)站欄目:Android中怎么利用Gallery實(shí)現(xiàn)多級聯(lián)動
路徑分享:http://aaarwkj.com/article32/pcdcpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站收錄、云服務(wù)器、App設(shè)計(jì)、App開發(fā)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)