Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框。它们之间的区别在于Spinner显示的是一个垂直的列表选择框吗,而Gallery显示的是一个水平的列表选择框。

下面以一个例子来说明:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"/>
<Gallery
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dip"
android:unselectedAlpha="0.6"
android:spacing="2pt"/>
</LinearLayout>

MainActivity.java

package com.example.testgallary;

import android.app.Activity;
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.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView; public class MainActivity extends Activity { private int[] imageIds = new int[]{
R.drawable.img1, R.drawable.img2,
R.drawable.img3, R.drawable.img4,
R.drawable.img5, R.drawable.img6,
}; private Gallery gallery;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery = (Gallery) findViewById(R.id.gallery);
imageView = (ImageView) findViewById(R.id.imageView); BaseAdapter adapter = new BaseAdapter() { @Override
public View getView(int position, View convertView, ViewGroup parent) {
// 创建一个ImageView
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(imageIds[position]);
// 设置ImageView的缩放类型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// 为imageView设置布局参数
imageView.setLayoutParams(new Gallery.LayoutParams(75, 100));
TypedArray typedArray = obtainStyledAttributes(
R.styleable.Gallery);
imageView.setBackgroundResource(typedArray.getResourceId(
R.styleable.Gallery_android_galleryItemBackground, 0));
return imageView;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public Object getItem(int item) {
// TODO Auto-generated method stub
return item;
} @Override
public int getCount() {
// TODO Auto-generated method stub
return imageIds.length;
}
}; gallery.setAdapter(adapter);
gallery.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
imageView.setImageResource(imageIds[position]); } @Override
public void onNothingSelected(AdapterView<?> view) { }
});
} }

运行结果:

最新文章

  1. android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
  2. IOS开发-图片尺寸
  3. android开机启动过程
  4. php函数 date() 详细资料
  5. Android核心分析之十七电话系统之rilD
  6. HDU 4911 Inversion (逆序数 归并排序)
  7. ASP.NET运行原理
  8. Think in java浏览一
  9. mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法
  10. 用soaplib的django webserver
  11. Integer Inquiry(大数相加)
  12. eclipse package,source folder,folder差别及相互转换
  13. c# 读取ACCESS 数据库
  14. memcached的安装(server、client)、magent整合
  15. php实现监控在线服务应用程序小栗子
  16. MinerDB.java 数据库工具类
  17. linux下有名管道进程通信
  18. Centos下DNS+NamedManager高可用部署方案完整记录
  19. 小程序返回顶部top滚动
  20. xml时间配置

热门文章

  1. 【Codeforces Round #433 (Div. 2) C】Planning
  2. comparator接口与Comparable接口的差别
  3. 每天五个java相关面试题(3)
  4. js cookie可选参数(document.cookie=&#39;name=张三;expires=&#39;+day;)
  5. linux的几个内核镜像格式Image 和 u-boot启动内核和文件系统时的一些环境变量的设置
  6. Deep Learning for Nature Language Processing --- 第四讲(下)
  7. Normal Equation of Computing Parameters Analytically
  8. 一次svn数据库的崩溃错误的解决
  9. Mongodb in Mycat指南
  10. 用CMake代替makefile进行跨平台交叉编译