网格布局GridView和Listview很相似,只不过前者是多列的.如果把GridView的android:numColumns设置为1,他就是ListView了.

通过GridView和ImageSwitcher以及ImageView做一个"带有预览的图片浏览器"

ImageSwitcher和ImageView十分相似,只不过比后者多了一个功能---它所显示的图片切换时可以设置动画效果

使用ImageSwitcher时,需要给他设置ImageSwitcher.ViewFactory, 实现ImageSwitcher.viewFactory时,需要实现一个makeView()方法, 该方法通常返回一个ImageView对象, 而ImageSwitcher则负责显示这个Imageview对象.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="" >
</GridView> <ImageSwitcher
android:id="@+id/is"
android:layout_width="320dp"
android:layout_height="320dp" >
</ImageSwitcher> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout>

主程序如下

public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid); GridView gv = (GridView) findViewById(R.id.gv);
final ImageSwitcher is = (ImageSwitcher) findViewById(R.id.is); final int[] images = new int[] { R.drawable.bomb5, R.drawable.bomb6,
R.drawable.bomb7, R.drawable.bomb8, R.drawable.bomb9,
R.drawable.bomb10, R.drawable.bomb11, R.drawable.bomb12,
R.drawable.bomb13, R.drawable.bomb14, R.drawable.bomb15,
R.drawable.bomb16 }; List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
for (int i = ; i < images.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("image", images[i]);
data.add(map);
} // 设置动画
is.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
is.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out)); // 设置图片切换效果
is.setFactory(new ViewFactory() { @Override
public View makeView() {
ImageView iv = new ImageView(MainActivity.this);
iv.setBackgroundColor(0xff0000); // 设置背景色
iv.setScaleType(ScaleType.FIT_CENTER);// 设置缩放类型
iv.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return iv;
}
}); //在适配器中引入 cell布局文件,
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.cell,
new String[] { "image" }, new int[] { R.id.image}); gv.setAdapter(adapter); gv.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
is.setImageResource(images[position % images.length]); }
}); gv.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
is.setImageResource(images[position % images.length]);
} @Override
public void onNothingSelected(AdapterView<?> parent) {
}
}); } }

最新文章

  1. 一步步开发自己的博客 .NET版 剧终篇(6、响应式布局 和 自定义样式)
  2. AJAX04 JQ的AJAX
  3. 访问修饰符protected
  4. ok6410串口裸机总结
  5. Android的Adapter用法
  6. angularjs 中ie兼容性的问题收集
  7. UIDatePikcer的基本用法
  8. 【TCP/IP 合约】 TCP/IP 基金会
  9. 使用mybatis多表联查的时候结果异常及springmvc的理解
  10. try}-with-resources
  11. RPC服务超时排查思路
  12. 用HTML,Vue+element-UI做桌面UI
  13. crm项目整理
  14. MySQL联结查询和组合查询
  15. 【译】SQLskills SQL101:Trace Flags、ERRORLOG、Update Statistics
  16. CSS3&amp;HTML5各浏览器支持情况一览表
  17. apache配置,禁止指定后缀访问
  18. Mac无法将自定义图标添加到Launchpad的替代方案(桌面双击Shell运行)
  19. WICED™ &lt;SMART&gt; Software Development Kit
  20. Python_09-面向对象编程

热门文章

  1. ssh的执行流畅
  2. js及jquery常用代码
  3. 移动开发-UI设计
  4. Oracle中的通用函数
  5. 自定义genericUDF demo
  6. AQS源码解析(一)-AtomicBoolean源码解析
  7. node.js 初学 自我笔记整理 day01
  8. React引入AntD按需加载报错
  9. socket-遇到一枚假程序员
  10. JMeter 登录,获取token的接口测试401