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(画廊视图)的内容,更多相关内容请关注PHP中文网(www.php.cn)!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号