GridView--网格视图、ImageSwitcher--图像切换器

==》

GridView,用于在界面上按行、列的分布形式显示多个组件;GridView和ListView父类相同——AbsListView,两者的主要区别是ListView属单方向分布,GridView属两个方向分布。

GridView也是通过Adapter提供显示数据——可通过SimpleAdapter或者自定义方式(开发重写BaseAdapter)提供数据显示。

GridView常用XML属性:

android:columnWidth setcolumnWidth(int) 设置列的宽度
android:gravity setGravity(int) 设置对其方式
android:horizontalSpacing setHorizontalSpacing(int) 设置各元素之间的水平间距
android:numColumns setNumColumns(int) 设置列数
android:stretchMode setStretchMode(int) 设置拉伸模式
android:verticalSpacing setVerticalSpacing(int) 设置各元素

注意:

GridView在使用时,android:columnWidth属性设置一般都大于“1”,默认为1.

android:stretchMode支持的属性:

  NO_STRETCH:不拉伸

  STRETCH_SPACING:仅拉伸元素之间的间距

  STRETCH_SPACING_UNIFORM:表格元素本身、元素之间的间距一起拉伸

  STRETCH_SPACING_COLUMN_WIDTH:仅拉伸元素表格元素本身  

ImageSwitcher

==>

ImageSwitcher由FrameLayout派生而来,ImageSwitcher和ImageView很相似,都用于显示图片。

ImageSwitcher比后者多了一个功能——显示的图片切换时可以设置动画效果。

使用ImageSwitcher需要为其设置一个ImageSwitcher.ViewFactory,

实现ImageSwitcher.ViewFactory时需要实现一个makeView()——该方法通常返回一个ImageView,而ImageSwitcher则负责显示这个ImageView.

实例一:

布局文件==》
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context=".MainActivity" > <GridView
android:id="@+id/gvcontent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="2pt"
android:numColumns="4"
android:verticalSpacing="2pt" /> <ImageSwitcher
android:id="@+id/imgswitcher"
android:layout_gravity="center_horizontal"
android:layout_width="320dp"
android:layout_height="320dp" /> </LinearLayout> cell.xml==>
<?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/imgview"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </LinearLayout> 代码实现==》
package com.example.mygridview; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Build;
import android.os.Bundle;
import android.annotation.TargetApi;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.ViewSwitcher.ViewFactory; @TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends Activity
{
private int[] ImageIds = new int[]
{ R.drawable.one, R.drawable.tw, R.drawable.th, R.drawable.eight, R.drawable.ele,
R.drawable.five, R.drawable.four, R.drawable.nice, R.drawable.seven, R.drawable.six,
R.drawable.sl, R.drawable.ss, R.drawable.sw, R.drawable.ten, R.drawable.tw,
R.drawable.oneowne };
private ImageSwitcher Switcher; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < ImageIds.length; i++)
{
Map<String, Object> item = new HashMap<String, Object>();
item.put("image", ImageIds[i]);
list.add(item);
} Switcher = (ImageSwitcher) this.findViewById(R.id.imgswitcher);
// 设置图片更换的动画效果
Switcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
Switcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
// 为ImageSwitcher设置图片切换的动画效果
Switcher.setFactory(new ViewFactory()
{
@Override
public View makeView()
{
ImageView img = new ImageView(MainActivity.this);
img.setBackgroundColor(0xff0000);
img.setScaleType(ImageView.ScaleType.FIT_CENTER);
img.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
return img;
}
}); // 创建一个SimpleAdapter
SimpleAdapter adaper = new SimpleAdapter(this, list, R.layout.cell, new String[]
{ "image" }, new int[]
{ R.id.imgview }); GridView gv = (GridView) this.findViewById(R.id.gvcontent);
gv.setAdapter(adaper);
// 以下为两种处理事件的方式
// 方式一,建议使用
gv.setOnItemClickListener(new myGridViewItemOnListener());
// 方式二
gv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
// 显示当前被选中的图片
Switcher.setImageResource(ImageIds[position % ImageIds.length]);
}
});
} private class myGridViewItemOnListener implements OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
// 显示当前被选中的图片
Switcher.setImageResource(ImageIds[position % ImageIds.length]);
}
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

注意:单击GridView中的图片ImageSwitcher会显示对应的图片信息。

运行效果如下:

												

android学习笔记14——GridView、ImageSwitcher的更多相关文章

  1. android学习笔记之GridView的使用

    除了listview会使用适配器外,还有一种就是GridView,listview是单列多行的显示形式,适用于多项目的查看.而GridView是多行多列的显示形式,一般用在查看图片样式的activit ...

  2. Android学习笔记之GridView的使用具体解释

    (1)创建布局代码例如以下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ...

  3. Android学习笔记(14):相对布局RelativeLayout

    相对布局RelativeLayout,继承自ViewGroup.相对布局的子组件的位置总是相对于兄弟组件或者父容器决定的. RelativeLayout支持的XML属性: android:gravit ...

  4. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

  5. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  6. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  7. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

  8. 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

    可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...

  9. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

随机推荐

  1. 设计模式:Strategy 策略模式 -- 行为型

    设计模式 策略模式Strategy(对象行为型) 这是几年前写的文字(转载做的笔记更准确些),发觉还是废话多了点. 其实,核心就是5.结构中的UML图 5.1 和 5.2(新增).现在看这张图就觉得一 ...

  2. JavaScript 阶段总结

  3. 70. Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  4. 单元测试--四则运算2程序(c++)

    源代码: //2016 3.6 Cheng Qiqin //四则运算改进 #include <iostream> #include<ctime> #include<cst ...

  5. 转:bash: /dev/null: Permission denied

    普通用户登录:bash: /dev/null: Permission denied 2012-12-07 16:01:36|  分类: linux |举报 |字号 订阅     Last login: ...

  6. arraylist 转json

    java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException 标签: cla ...

  7. mysql数据库主从复制部署笔记

    主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...

  8. ZOJ-3929 Deque and Balls (DP+找规律)

    题目大意:n个数,每个数的大小都在1~n之间.操作n次,第 i 次将第 i 个数放到一个双端队列里面,放到队列两端的概率是相等的.问操作n次之后双端队列中元素满足xi>xi+1的对数的期望,输出 ...

  9. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  10. activity状态的保存和保持(onRetainNonConfigurationInstance和getLastNonConfigurationInstanc

    本文转载于:http://chengbs.iteye.com/blog/1156167 比较onsaveinstancestate() 与 onretainnonconfigurationinstan ...