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(画廊视图)的内容。
