Android开发学习笔记:Gallery和GridView浅析.doc_第1页
Android开发学习笔记:Gallery和GridView浅析.doc_第2页
Android开发学习笔记:Gallery和GridView浅析.doc_第3页
Android开发学习笔记:Gallery和GridView浅析.doc_第4页
Android开发学习笔记:Gallery和GridView浅析.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android开发学习笔记:Gallery和GridView浅析2011-08-23 22:15:00标签:GridView移动开发Android休闲浅析原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/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); /设置监听器 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监听器 g.setAdapter(newImageAdapter(this); g.setOnItemSelectedListener(this); /创建内部类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设置此组件中的内容在组件中的位置。可选的值有: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); /注册监听事件 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; /创建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. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论