Android 组件Gallery和GridView示例讲解
程序员文章站
2024-03-05 20:03:13
android gallery和gridview组件:
gallery 画廊
gallery是一个内部元素可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局...
android gallery和gridview组件:
gallery 画廊
gallery是一个内部元素可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局组件。
我们还是直接看看例子的运行效果。
下面上代码,相关解释都放在代码里了。
1、建立一个新项目 hellogallery
2、拷贝wallpaper_0.jpg…wallpaper_9.jpg 10个图片文件到res/drawable目录
3、res/layout/main.xml文件的内容如下:
<?xml version="1.0" encoding="utf-8"?> <framelayout android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/framelayout01"> <imageview android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/imageview01" android:src="@drawable/wallpaper_0"> </imageview> <gallery android:layout_height="wrap_content" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery01" android:spacing="5dp"> </gallery> </framelayout>
其中我们使用framelayout来实现叠加效果,使用imageview来显示大图,gallery来展示画廊,android:spacing="5dp" 属性则是用来设置元素之间的间隔。
4、在res/values/目录中新建一个attrs.xml内容如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare -styleable="" name="hellogallery"> <attr name="android:galleryitembackground"> </attr></declare> </resources>
5、在mainhellogallery.java中的内容如下:
package android.basic.lesson13; import android.app.activity; import android.content.context; import android.content.res.typedarray; 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.gallery; import android.widget.imageview; import android.widget.toast; public class mainhellogallery extends activity { /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); //定义ui组件 final imageview iv= (imageview)findviewbyid(r.id.imageview01); gallery g = (gallery) findviewbyid(r.id.gallery01); //设置图片匹配器 g.setadapter(new imageadapter(this)); //设置adapterview点击监听器,gallery是adapterview的子类 g.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { //显示点击的是第几张图片 toast.maketext(mainhellogallery.this, "" + position, toast.length_long).show(); //设置背景部分的imageview显示当前item的图片 iv.setimageresource(((imageview)view).getid()); } }); } //定义继承baseadapter的匹配器 public class imageadapter extends baseadapter { //item的修饰背景 int mgalleryitembackground; //上下文对象 private context mcontext; //图片数组 private integer[] mimageids = { r.drawable.wallpaper_0, r.drawable.wallpaper_1, r.drawable.wallpaper_2, r.drawable.wallpaper_3, r.drawable.wallpaper_4, r.drawable.wallpaper_5, r.drawable.wallpaper_6, r.drawable.wallpaper_7, r.drawable.wallpaper_8, r.drawable.wallpaper_9 }; //构造方法 public imageadapter(context c){ mcontext = c; //读取styleable资源 typedarray a = obtainstyledattributes(r.styleable.hellogallery); mgalleryitembackground = a.getresourceid( r.styleable.hellogallery_android_galleryitembackground, 0); a.recycle(); } //返回项目数量 @override public int getcount() { return mimageids.length; } //返回项目 @override public object getitem(int position) { return position; } //返回项目id @override public long getitemid(int position) { return position; } //返回视图 @override public view getview(int position, view convertview, viewgroup parent) { imageview iv = new imageview(mcontext); iv.setimageresource(mimageids[position]); //给生成的imageview设置id,不设置的话id都是-1 iv.setid(mimageids[position]); iv.setlayoutparams(new gallery.layoutparams(120, 160)); iv.setscaletype(imageview.scaletype.fit_xy); iv.setbackgroundresource(mgalleryitembackground); return iv; } } }
我们点击某一张图片,会把该子元素的图片显示在放在后面一层的imageview组件中。有兴趣的同学可以了解一下adapterview的继承关系:
以上就是对android gallery 和 gridview 组件的介绍,后续继续对相关知识补充,谢谢大家对本站的支持!
上一篇: 简单介绍Java网络编程中的HTTP请求
下一篇: java 输出九九乘法表口诀的代码