Android開發(fā)學習筆記:Gallery和GridView淺析.doc_第1頁
Android開發(fā)學習筆記:Gallery和GridView淺析.doc_第2頁
Android開發(fā)學習筆記:Gallery和GridView淺析.doc_第3頁
Android開發(fā)學習筆記:Gallery和GridView淺析.doc_第4頁
Android開發(fā)學習筆記:Gallery和GridView淺析.doc_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Android開發(fā)學習筆記:Gallery和GridView淺析2011-08-23 22:15:00標簽:GridView移動開發(fā)Android休閑淺析原創(chuàng)作品,允許轉載,轉載時請務必以超鏈接形式標明文章原始出處、作者信息和本聲明。否則將追究法律責任。/3061169/647355一.Gallery的簡介 Gallery(畫廊)是一個鎖定中心條目并且擁有水平滾動列表的視圖,一般用來瀏覽圖片,并且可以響應事件顯示信息。Gallery還可以和ImageSwitcher組件結合使用來實現一個通過縮略圖來瀏覽圖片的效果。Gallery常用的XML屬性屬性名稱描述android:animationDuration設置布局變化時動畫的轉換所需的時間(毫秒級)。僅在動畫開始時計時。該值必須是整數,比如:100。android:gravity指定在對象的X和Y軸上如何放置內容。指定一下常量中的一個或多個(使用 “|”分割)ConstantValueDescriptiontop0x30緊靠容器頂端,不改變其大小bottom0x50緊靠容器底部,不改變其大小left0x03緊靠容器左側,不改變其大小right0x05緊靠容器右側,不改變其大小center_vertical0x10垂直居中,不改變其大小fill_vertical0x70垂直方向上拉伸至充滿容器center_horizontal0x01水平居中,不改變其大小Fill_horizontal0x07水平方向上拉伸使其充滿容器center0x11居中對齊,不改變其大小fill0x77在水平和垂直方向上拉伸,使其充滿容器clip_vertical0x80垂直剪切(當對象邊緣超出容器的時候,將上下邊緣超出的部分剪切掉)clip_horizontal0x08水平剪切(當對象邊緣超出容器的時候,將左右邊緣超出的部分剪切掉)android:spacing圖片之間的間距android:unselectedAlpha設置未選中的條目的透明度(Alpha)。該值必須是float類型,比如:“1.2”。首先介紹Gallery單獨使用的例子:MainActivity.javapackagecom.android.gallerydemo; importandroid.app.Activity; importandroid.content.Context; importandroid.os.Bundle; importandroid.view.View; importandroid.view.ViewGroup; importandroid.widget.AdapterView; importandroid.widget.AdapterView.OnItemClickListener; importandroid.widget.BaseAdapter; importandroid.widget.Gallery; importandroid.widget.ImageView; importandroid.widget.Toast; publicclassMainActivityextendsActivity privateGallerygallery; OverridepublicvoidonCreate(BundlesavedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); gallery=(Gallery)findViewById(R.id.gallery); /設置圖片適配器 gallery.setAdapter(newImageAdapter(this); /設置監(jiān)聽器 gallery.setOnItemClickListener(newOnItemClickListener() OverridepublicvoidonItemClick(AdapterViewparent,Viewv,intposition,longid) Toast.makeText(MainActivity.this,點擊了第+(position+1)+張圖片,Toast.LENGTH_LONG).show(); ); classImageAdapterextendsBaseAdapter /聲明Context privateContextcontext; /圖片源數組 privateIntegerimageInteger= R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7 ; /聲明ImageAdapter publicImageAdapter(Contextc) context=c; Override/獲取圖片的個數 publicintgetCount() returnimageInteger.length; Override/獲取圖片在庫中的位置 publicObjectgetItem(intposition) returnposition; Override/獲取圖片在庫中的位置 publiclonggetItemId(intposition) /TODOAuto-generatedmethodstub returnposition; OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent) ImageViewimageView=newImageView(context); /給ImageView設置資源 imageView.setImageResource(imageIntegerposition); /設置比例類型 imageView.setScaleType(ImageView.ScaleType.FIT_XY); /設置布局圖片128x192顯示 imageView.setLayoutParams(newGallery.LayoutParams(128,192); returnimageView; main.xml效果圖:Gallery和ImageSwitcher組件結合使用的例子:MainActivity.javapackagecom.android.gallerytest; importandroid.app.Activity; importandroid.content.Context; importandroid.os.Bundle; importandroid.view.View; importandroid.view.ViewGroup; importandroid.view.Window; importandroid.view.animation.AnimationUtils; importandroid.widget.AdapterView; importandroid.widget.BaseAdapter; importandroid.widget.Gallery; importandroid.widget.ImageSwitcher; importandroid.widget.ImageView; importandroid.widget.AdapterView.OnItemSelectedListener; importandroid.widget.Gallery.LayoutParams; importandroid.widget.ViewSwitcher.ViewFactory; publicclassMainActivityextendsActivityimplementsOnItemSelectedListener, ViewFactory privateImageSwitchermSwitcher; /大圖片對應的縮略圖源數組 privateIntegermThumbIds=R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,R.drawable.sample_thumb_6, R.drawable.sample_thumb_7; /大圖片源數組 privateIntegermImageIds=R.drawable.sample_0,R.drawable.sample_1, R.drawable.sample_2,R.drawable.sample_3,R.drawable.sample_4, R.drawable.sample_5,R.drawable.sample_6,R.drawable.sample_7; OverridepublicvoidonCreate(BundlesavedInstanceState) super.onCreate(savedInstanceState); /設置窗口無標題 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); mSwitcher=(ImageSwitcher)findViewById(R.id.switcher); /注意在使用一個ImageSwitcher之前, /一定要調用setFactory方法,要不setImageResource這個方法會報空指針異常。 mSwitcher.setFactory(this); /設置動畫效果 mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in); mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out); Galleryg=(Gallery)findViewById(R.id.gallery); /添加OnItemSelectedListener監(jiān)聽器 g.setAdapter(newImageAdapter(this); g.setOnItemSelectedListener(this); /創(chuàng)建內部類ImageAdapter publicclassImageAdapterextendsBaseAdapter publicImageAdapter(Contextc) mContext=c; publicintgetCount() returnmThumbIds.length; publicObjectgetItem(intposition) returnposition; publiclonggetItemId(intposition) returnposition; publicViewgetView(intposition,ViewconvertView,ViewGroupparent) ImageViewi=newImageView(mContext); i.setImageResource(mThumbIdsposition); /設置邊界對齊 i.setAdjustViewBounds(true); /設置布局參數 i.setLayoutParams(newGallery.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); /設置背景資源 i.setBackgroundResource(R.drawable.picture_frame); returni; privateContextmContext; Override/實現onItemSelected()方法,更換圖片 publicvoidonItemSelected(AdapterViewadapter,Viewv,intposition, longid) /設置圖片資源 mSwitcher.setImageResource(mImageIdsposition); OverridepublicvoidonNothingSelected(AdapterViewarg0) Override/實現makeView()方法,為ImageView設置布局格式 publicViewmakeView() ImageViewi=newImageView(this); /設置背景顏色 i.setBackgroundColor(0xFF000000); /設置比例類型 i.setScaleType(ImageView.ScaleType.FIT_CENTER); /設置布局參數 i.setLayoutParams(newImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT); returni; main.xml 效果圖:二.GridView的簡介 GridView(網格視圖)是按照行列的方式來顯示內容的,一般用于顯示圖片,圖片等內容,比如實現九宮格圖,用GridView是首選,也是最簡單的。主要用于設置Adapter。GridView常用的XML屬性:屬性名稱描述android:columnWidth設置列的寬度。android:gravity設置此組件中的內容在組件中的位置??蛇x的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多選,用“|”分開。android:horizontalSpacing兩列之間的間距。android:numColumns設置列數。android:stretchMode縮放模式。android:verticalSpacing兩行之間的間距。下面有三個例子,第一個是只顯示圖片的,第二個是顯示圖片文字的(這里的圖片是Android系統自帶的圖片),第三個是顯示自定義的圖片文字。前面兩個例子的實現都不是很難,第三個例子的實現有些復雜,學習GridView的時候,就想著能不能自定義自己喜歡的圖片加上文字,在網上找些資料,一般都是第二個例子的形式的,最后在視頻學習上找到了能實現自定義自己的圖片的例子。自己就照著例子去學習,修改成了第三個例子。第一個例子:MainActivity.javapackage com.android.gridview.activity; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gv = (GridView)findViewById(R.id.GridView1); /為GridView設置適配器 gv.setAdapter(new MyAdapter(this); /注冊監(jiān)聽事件 gv.setOnItemClickListener(new OnItemClickListener() public void onItemClick(AdapterView parent, View v, int position, long id) Toast.makeText(MainActivity.this, pic + position, Toast.LENGTH_SHORT).show(); ); /自定義適配器 class MyAdapter extends BaseAdapter /上下文對象 private Context context; /圖片數組 private Integer imgs = R.drawable.pic0, R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7, R.drawable.pic8, R.drawable.pic0, R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7, R.drawable.pic8, ; MyAdapter(Context context) this.context = context; public int getCount() return imgs.length; public Object getItem(int item) return item; public long getItemId(int id) return id; /創(chuàng)建View方法 public View getView(int position, View convertView, ViewGroup parent) ImageView imageView; if (convertView = null) imageView = new ImageView(context); imageView.setLayoutParams(new GridView.LayoutParams(75, 75);/設置ImageView對象布局 imageView.setAdjustViewBounds(false);/設置邊界對齊 imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);/設置刻度的類型 imageView.setPadding(8, 8, 8, 8);/設置間距 else imageView = (ImageView) convertView; imageView.setImageResource(imgsposition);/為ImageView設置圖片資源 return imageView; main.xml 效果圖:第二個例子:MainActivity.javapackage com.android.gridview2.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.GridView; import android.widget.SimpleAdapter; public class MainActivity extends Activity private GridView gv; Override protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.gridview); /準備要添加的數據條目 ListMap items = new ArrayListMap(); for (int i = 0; i 9; i+) Map item = new HashMap(); item.put(imageItem, R.drawable.icon);/添加圖像資源的ID item.put(textItem, icon + i);/按序號添加ItemText items.add(item); /實例化一個適配器 SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.grid_item, new StringimageItem, textItem, new intR.id.image_item, R.id.text_item); /獲得GridView實例 gv = (GridView)findViewById(R.id.mygridview); /為GridView設置適配器 gv.setAdapter(adapter); gridview.xml grid_item.xml 效果圖:第三個例子:MainActivity.javapackage com.android.gridview3; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends Activity private GridView gridView; /圖片的文字標題 private String titles = new String pic1, pic2, pic3, pic4, pic5, pic6, pic7, pic8, pic9; /圖片ID數組 private int images = new int R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7, R.drawable.pic8,R.drawable.pic9 ; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); gridView = (GridView) findViewById(R.id.gridview); PictureAdapter adapter = new PictureAdapter(titles, images, this); gridView.setAdapter(adapter); gridView.setOnItemClickListener(new OnItemClickListener() public void onItemClick(AdapterView parent, View v, int position, long id) Toast.makeText(MainActivity.this, pic + (position+1), Toast.LENGTH_SHORT).show(); ); /自定義適配器 class PictureAdapter extends

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論