您好,欢迎访问一九零五行业门户网

Android UI控件系列:Gallery(画廊视图)

gallery能够水平显示其内容,一般用来浏览图片,被选中的选项位于中间,并且可以相应事件显示信息。下面结合imageswitcher组件来实现一个通过缩略图来浏览图片的程序,具体步骤如下
第一步:
创建一个andorid工程”gallerytest”,该工程的入口是activity类gallerytest继承activity并实现onitemselectedlistener和viewfactory接口,来实现图片和视图的创建
package org.hualang.gallery; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.adapterview.onitemselectedlistener; import android.widget.viewswitcher.viewfactory; //继承activity,实现onitemselectedlistener和viewfactory接口 public class gallerytest extends activity implements onitemselectedlistener,viewfactory{ /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } @override public view makeview() { // todo auto-generated method stub return null; } @override public void onitemselected(adapterview<?> arg0, view arg1, int arg2, long arg3) { // todo auto-generated method stub } @override public void onnothingselected(adapterview<?> arg0) { // todo auto-generated method stub } }
第二步:
在工程的res\drawable\目录下添加7张图片和对应的缩略图
第三步:
在工程res\layout\目录下创建一个布局文件main.xml,在其中那个添加一个gallery组件和一个imageswitcher组件,并设置相应的属性
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <imageswitcher android:id="@+id/switcher" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignparenttop="true" android:layout_alignparentleft="true" /> <gallery android:id="@+id/gallery" android:background="#55000000" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:gravity="center_vertical" android:spacing="16dp" /> </linearlayout>
第四步:在gallerytest顶部声明使用到的imageswitcher实例图片资源integer数组
public class gallerytest extends activity implements onitemselectedlistener,viewfactory{ /** called when the activity is first created. */ //声明imageswitcher private imageswitcher switcher; //缩略图片id数组 private integer[] thumbids={ r.drawable.thumb0, r.drawable.thumb1, r.drawable.thumb2, r.drawable.thumb3, r.drawable.thumb4, r.drawable.thumb5, r.drawable.thumb6, r.drawable.thumb7 }; //图片id数组 private integer[] imgids={ r.drawable.img0, r.drawable.img1, r.drawable.img2, r.drawable.img3, r.drawable.img4, r.drawable.img5, r.drawable.img6, r.drawable.img7 };
第五步:
在gallerytest的oncreate()方法中,将窗口样式设置为无标题,设置当前布局视图,获得imageswitcher实例,并设置渐进渐出动画,获得gallery实例
public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //设置窗口特征无标题 requestwindowfeature(window.feature_no_title); setcontentview(r.layout.main); //通过findviewbyid方法获得imageswitcher对象 switcher=(imageswitcher)findviewbyid(r.id.switcher); //为imageswitcher设置工厂 switcher.setfactory(this); //设置动画渐入效果 switcher.setinanimation(animationutils.loadanimation(this, android.r.anim.fade_in)); //设置动画渐出效果 switcher.setoutanimation(animationutils.loadanimation(this, android.r.anim.fade_out)); //通过findviewbyid方法获得gallery对象 gallery g=(gallery)findviewbyid(r.id.gallery); }
第六步:
创建内部类imageadapter,该类继承baseadapter,为gallery设置adapter实例
public class imageadapter extends baseadapter { //构造方法 public imageadapter(context c) { mcontext = c; } //获得数量 public int getcount() { return thumbids.length; } //获得当前选项 public object getitem(int position) { return position; } //获得当前选项id public long getitemid(int position) { return position; } //获得view对象 public view getview(int position, view convertview, viewgroup parent) { //实例化imageview对象 imageview i = new imageview(mcontext); //设置缩略图片资源 i.setimageresource(thumbids[position]); //设置边界对齐 i.setadjustviewbounds(true); //设置布局参数 i.setlayoutparams(new gallery.layoutparams( layoutparams.wrap_content, layoutparams.wrap_content)); //设置背景资源 i.setbackgroundresource(r.drawable.picturefrom); return i; } private context mcontext; }
第七步:
实现onitemselected()方法,更换图片
@override public void onitemselected(adapterview<?> adapter, view v, int position, long id) { switcher.setimageresource(imgids[position]); }
第八步:
实现makeview()方法,为imageview设置布局格式
@override public view makeview() { // todo auto-generated method stub //创建imageview imageview i=new imageview(this); //设置背景颜色 i.setbackgroundcolor(0xff000000); //设置精度类型 i.setscaletype(imageview.scaletype.fit_center); //设置布局参数 i.setlayoutparams(new imageswitcher.layoutparams( layoutparams.fill_parent,layoutparams.fill_parent)); return i; }
第九步:
为gallery添加adapter并添加onitemselectedlistener监听器
g.setadapter(new imageadapter(this)); g.setonitemselectedlistener(this);
至此,全部,结束,运行结果如下
完整源代码:
package org.hualang.gallery;<br><br>import android.app.activity;<br>import android.content.context;<br>import android.os.bundle;<br>import android.view.view; <br>import android.view.viewgroup;<br>import android.view.window;<br>import android.view.animation.animationutils;<br>import android.widget.adapterview;<br> import android.widget.baseadapter;<br>import android.widget.gallery;<br>import android.widget.imageswitcher;<br>import android.widget.imageview;<br> import android.widget.adapterview.onitemselectedlistener;<br>import android.widget.gallery.layoutparams;<br>import android.widget.viewswitcher.viewfactory;<br><br> public class gallerytest extends activity implements onitemselectedlistener,<br> viewfactory {<br><br> private imageswitcher mswitcher;<br><br> private integer[] mthumbids = { r.drawable.thumb0,<br> r.drawable.thumb1, r.drawable.thumb2, <br> r.drawable.thumb3, r.drawable.thumb4,<br> r.drawable.thumb5, r.drawable.thumb6,<br> r.drawable.thumb7 };<br><br> private integer[] mimageids = { r.drawable.img0, r.drawable.img1,<br> r.drawable.img2, r.drawable.img3, r.drawable.img4,<br> r.drawable.img5, r.drawable.img6, r.drawable.img7 };<br><br> @override<br> public void oncreate(bundle savedinstancestate) {<br> super.oncreate(savedinstancestate);<br><br> requestwindowfeature(window.feature_no_title);<br> setcontentview(r.layout.main);<br> mswitcher = (imageswitcher) findviewbyid(r.id.switcher);<br> mswitcher.setfactory(this);<br> mswitcher.setinanimation(animationutils.loadanimation(this,<br> android.r.anim.fade_in));<br> mswitcher.setoutanimation(animationutils.loadanimation(this,<br> android.r.anim.fade_out));<br><br> gallery g = (gallery) findviewbyid(r.id.gallery);<br><br> g.setadapter(new imageadapter(this)); g.setonitemselectedlistener(this);<br><br> }<br><br> public class imageadapter extends baseadapter {<br> public imageadapter(context c) {<br> mcontext = c;<br> }<br> public int getcount() { <br> return mthumbids.length;<br> }<br> public object getitem(int position) { <br> return position;<br> }<br> public long getitemid(int position) { <br> return position;<br> }<br> public view getview(int position, view convertview, viewgroup parent) {<br> imageview i = new imageview(mcontext);<br><br> i.setimageresource(mthumbids[position]); <br> i.setadjustviewbounds(true);<br> i.setlayoutparams(new gallery.layoutparams(<br> layoutparams.wrap_content, layoutparams.wrap_content)); <br> i.setbackgroundresource(r.drawable.picturefrom);<br> return i;<br> }<br> private context mcontext;<br> }<br><br> @override<br> public void onitemselected(adapterview<?> adapter, view v, int position,<br> long id) {<br> mswitcher.setimageresource(mimageids[position]);<br> }<br> <br> @override<br> public void onnothingselected(adapterview<?> arg0) {<br><br> }<br><br> @override<br> public view makeview() {<br> imageview i = new imageview(this);<br> i.setbackgroundcolor(0xff000000); <br> i.setscaletype(imageview.scaletype.fit_center);<br> i.setlayoutparams(new imageswitcher.layoutparams(<br> layoutparams.fill_parent, layoutparams.fill_parent));<br> return i;<br> }<br>}
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <imageswitcher android:id="@+id/switcher" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignparenttop="true" android:layout_alignparentleft="true" /> <gallery android:id="@+id/gallery" android:background="#55000000" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:gravity="center_vertical" android:spacing="16dp" /> </relativelayout>
以上就是android ui控件系列:gallery(画廊视图)的内容。
其它类似信息

推荐信息