6.3 Gallery和BaseAdapter容器
来源:互联网 发布:蒙牛puremilk知乎 编辑:程序博客网 时间:2024/06/04 18:48
6.3 Gallery和BaseAdapter容器
综合评级:
想读(0) 在读(0) 已读(0) 品书斋鉴(0) 已有0人发表书评
《Android江湖》第6章人外有人,山外有山,在本章内容中讲解了Android控件的高级用法。首先讲解了对话框中使用进度条控件的基本知识和使用方法,然后依次介绍了Spinner、setDropDownViewResource、Gallery、AnalogClock和DigitalClock控件的基本用法,最后讲解了BaseAdapter容器的基本知识。本节为大家介绍Gallery和BaseAdapter容器。
AD:51CTO云计算架构师峰会 抢票进行中!
6.3 Gallery和BaseAdapter容器
练习3:演练Gallery和BaseAdapter联合使用的方法
源码路径:第6章\Gallery
在此尝试将数张PNG图片导入到Drawable中,并在onCreate时载入到Gallery Widget中,然后添加一个OnItemClick事件,以获取图片的ID编号来响应用户点击图片时的状态,完成Gallery的高级使用。本次演练的重点是如何设置Gallery图片的宽高以及放置图片Layout的大小,在此改写一个继承自BaseAdapter的ImageAdapter容器来存放图片,通过ImageView.setScaleType()方法来改变图片的显示,再通过setLayoutParams() 方法来改变Layout的宽高。
第1步:编写布局文件main.xml,添加一个Gallery和一个ImageView。
第2步:定义layout 外部resource 的xml文件,用来改变layout 的背景。具体代码如下所示:
第3步:新建一个myImageAdapter类——Gallery的适配器,它继承于BaseAdapter类。具体代码如下所示:
- xml version="1.0" encoding="utf-8"?>
- <resources>
- <declare-styleable name="Gallery">
- <attr name="android:galleryItemBackground" />
- declare-styleable>
- resources>
- public class myImageAdapter extends BaseAdapter {
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- return null;
- }
- }
第4步:修改mainActivity.java,添加Gallery相关操作。主要代码如下所示:
程序执行后的效果如图6-6所示。当选择一幅图片后,此图片会被放大显示,并显示标号。 (点击查看大图)图6-6 执行效果
- public class Galleryjia extends Activity
- {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- /*通过findViewById取得*/
- Gallery g = (Gallery) findViewById(R.id.mygallery);
- /* 添加一个ImageAdapter并设置给Gallery对象 */
- g.setAdapter(new ImageAdapter(this));
- /* 设置一个itemclickListener并Toast被点击图片的位置 */
- g.setOnItemClickListener(new OnItemClickListener()
- {
- public void onItemClick
- (AdapterView> parent, View v, int position, long id)
- {
- Toast.makeText
- (Galleryjia.this, getString(R.string.my_gallery_text_pre)
- + position+ getString(R.string.my_gallery_text_post),
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- /* 改写BaseAdapter自定义一ImageAdapter class */
- public class ImageAdapter extends BaseAdapter
- {
- /*声明变量*/
- int mGalleryItemBackground;
- private Context mContext;
- /*ImageAdapter的构造器*/
- public ImageAdapter(Context c)
- {
- mContext = c;
- /* 使用在res/values/attrs.xml中的<declare-styleable>定义
- * 的Gallery属性*/
- TypedArray a = obtainStyledAttributes(R.styleable.Gallery);
- /*取得Gallery属性的Index id*/
- mGalleryItemBackground = a.getResourceId
- (R.styleable.Gallery_android_galleryItemBackground, 0);
- /*让对象的styleable属性能够反复使用*/
- a.recycle();
- }
- /* 覆盖的方法getCount,返回图片数目 */
- public int getCount()
- {
- return myImageIds.length;
- }
- /* 覆盖的方法getItemId,返回图像的数组id */
- public Object getItem(int position)
- {
- return position;
- }
- public long getItemId(int position)
- {
- return position;
- }
- /* 覆盖的方法getView,返回一View对象 */
- public View getView
- (int position, View convertView, ViewGroup parent)
- {
- /*产生ImageView对象*/
- ImageView i = new ImageView(mContext);
- /*设置图片给imageView对象*/
- i.setImageResource(myImageIds[position]);
- /*重新设置图片的宽高*/
- i.setScaleType(ImageView.ScaleType.FIT_XY);
- /*重新设置Layout的宽高*/
- i.setLayoutParams(new Gallery.LayoutParams(136, 88));
- /*设置Gallery背景图*/
- i.setBackgroundResource(mGalleryItemBackground);
- /*返回imageView对象*/
- return i;
- }
- /*建构一Integer array并取得预加载Drawable的图片id*/
- private Integer[] myImageIds =
- {
- R.drawable.photo1,
- R.drawable.photo2,
- R.drawable.photo3,
- R.drawable.photo4,
- R.drawable.photo5,
- R.drawable.photo6,
- };
- }
- }
- 6.3 Gallery和BaseAdapter容器
- Gallery和BaseAdapter容器
- Gallery与衍生的BaseAdapter容器
- BaseAdapter + Gallery
- BaseAdapter应用 和gallery滑动图片
- Gallery与衍生BaseAdapter容器创建图片预览详解
- Gallery之BaseAdapter
- 4.10 心爱小宝贝相片集Gallery与衍生BaseAdapter容器
- 9. android Gallery(画廊)以及BaseAdapter
- 9. android Gallery(画廊)以及BaseAdapter .
- android Gallery控件与BaseAdapter适配器
- Gallery 画廊初悉 结合BaseAdapter
- android 拖拉图片 Gallery 用BaseAdapter实现
- Android学习篇章3-Gallery画廊-Baseadapter
- 2013年3月22日----Gallery与衍生BaseAdapter
- 微缩预览画廊的实现:抽象类BaseAdapter填充Gallery
- Gallery重写baseadapter时getView函数中的view重用
- Android gallery+BaseAdapter实现简易的图片查看器
- sipdroid开源项目——sip时代
- hdu 2176 取(m堆)石子游戏
- android流量监控类TrafficStats讲解
- MCISendString详细参数
- 关于UIView的autoresizingMask属性的研究
- 6.3 Gallery和BaseAdapter容器
- C++的接口和重载<<运算符的小例子(试试把Circle的类的virtual的shapeName函数注释掉? )
- 考试过后再看信息系统开发与管理,发现…
- 模型组合(Model Combining)之Boosting与Gradient Boosting
- Java实现zip压缩/解压缩
- 使用rownum
- 11 java 王少飞-ServletContext应用
- "黑马程序员"张老师Java高新技术学习(注解、类加载器)
- [Android开发][001~002] android开发入门,环境配置