android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)
GridView用于在界面上按行、列分布显示多个组件。GridView和ListView有共同父类:AbsListView。
GridView与ListView的差别在于:ListView仅仅在一个方向上分布,GridView在两个方向上分布。所以使用GridView时一般都指定numColumns大于1,否则该属性默认值为1。就意味着改GridView仅仅有一列,那就变成了ListView
GridView的xml属性
android:strtchMode 的值为:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhpeGluaHVhY29t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
ImageSwitcher由FrameLayout派生而出,ImageSwitcher组件与ImageView非常相似,可是ImageSwitcher多一个功能:它所显示的图片切换时能够设置动画效果。
使用ImageSwitcher时往往须要为它设置一个ImageSwitcher.ViewFactory的makeView()方法来负责显示ImageView
以下结合GridView和ImageSwitcher来实现一个样例
(1)activity_main.xml 布局GridView和ImageSwitcher
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal">
<GridView
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="1dp"
android:verticalSpacing="2dp"
android:numColumns="4"/>
<ImageSwitcher
android:id="@+id/imageSwitch"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/> </LinearLayout>
(2)img.xml 布局imageView 用于显示GridView的图片
<?xml version="1.0" encoding="UTF-8"? >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"> <ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
(3)MainActivity.java
package com.example.viewimage; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.SimpleAdapter;
import android.widget.ViewSwitcher.ViewFactory; public class MainActivity extends Activity { //定义组件
private GridView gredView = null;
private ImageSwitcher imageSwt =null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取布局组件
gredView = (GridView) findViewById(R.id.grid);
imageSwt = (ImageSwitcher) findViewById(R.id.imageSwitch);
//图片
final int images[] = new int[]{
R.drawable.name01,R.drawable.name02,R.drawable.name03,R.drawable.name04,
R.drawable.name05,R.drawable.name06,R.drawable.name07,R.drawable.name08,
R.drawable.name09,R.drawable.name10,R.drawable.name11,R.drawable.name12,
R.drawable.name13,R.drawable.name14,R.drawable.name15,R.drawable.name16
};
//创建list集合。存储图片
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
for(int i=0;i<images.length;i++){
Map<String,Object> map = new HashMap<String,Object>();
map.put("img", images[i]);
list.add(map);
}
//设置图片更换效果
//淡入效果
imageSwt.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
//淡出效果
imageSwt.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
//设置图片转换效果
imageSwt.setFactory(new ViewFactory() { @Override
public View makeView() {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(300, 300));
imageView.setScaleType(ScaleType.FIT_CENTER);
return imageView;
}
});
//设置适配器
SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.img, new String[]{"img"}, new int[]{R.id.img});
//适配器
gredView.setAdapter(simpleAdapter);
//选中事件监听
gredView.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Log.i("onItemSelected", "onItemSelected");
imageSwt.setImageResource(images[position]);
} @Override
public void onNothingSelected(AdapterView<? > parent) {
// TODO Auto-generated method stub }
});
//点击事件监听
gredView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("onItemClick", "onItemClick");
imageSwt.setImageResource(images[position]); }
});
} }
执行效果例如以下:
android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)的更多相关文章
- Android 自学之网格试图(GridView)和图片切换器(ImageSwitcher)功能和用法
网格试图(GridView)用于在界面上按行,列分布的方式来显示多个组件. GridView和ListView有共同的父类:AbsListView,因此GridView和ListView具有一定的相似 ...
- Android学习笔记27:网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...
- Android 网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...
- 网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...
- 图像切换器(ImageSwitcer)的功能与用法
ImageSwitcher继承了VewSwitcher,因此它具有与ViewSwitcher相同的特征,可以在切换View组件时使用动画效果.ImageSwitcher继承了ViewSwitcher并 ...
- 基于图像切换器(imageSwitcher)的支持动画的图片浏览器
利用GridView和ImageSwitcher的基本用法 public class MainActivity extends Activity { int[] imageIds = new int[ ...
- ImageSwitcher (图像切换器,显示图片)
ImageSwitcher继承了ViewSwitcher,主要在切换图片时加入动画效果 使用方法: 1.为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的Vie ...
- Android——网格视图 GridView
activity_activitygrid.xml <?xml version="1.0" encoding="utf-8"?> <GridV ...
- [转]Android网格视图(GridView)
GridView的一些属性: 1.android:numColumns=”auto_fit” //GridView的列数设置为自动,也可以设置成2.3.4…… 2.android:columnWi ...
随机推荐
- Dubbo服务降级设置
dubbo降级服务 dubbo开发中,通常是微服务架构,那么在使用过程中可能会遇到多种问题: 1)多个服务之间可能由于服务没有启动或者网络不通,调用中会出现远程调用失败; 2) 服务请求过大, ...
- VC++编程之道读书笔记(2)
第三篇 技术细节 第七章:细说开发人员必知必会的39个开发细节 细节36:单例模式的应用 在开发程序时,往往需要在整个工程中只需要一个类的实例.而这个实例一旦被创建就不能被其他的实例再创建了,通常我们 ...
- oracle中用SQL语句创建和管理表
表名和列名的命名规则: 必须以字母开头 必须在1-30个字符之间 只能包含A-Z,a-z,0-9,_,$,# 不能与用户定义的其它对象重名 不能使用ORACLE的保留字 创建前具备的条件: CREAT ...
- 【Java】线程池的作用
在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务 ...
- 纯css3简单实用的checkbox复选框和radio单选框
昨天为大家分享了一款很炫的checkbox复选框和radio单选框,今天再给大家带来一款简单实用的checkbox复选框和radio单选框.界面清淅.舒服.先给大家来张效果图: 在线预览 源码下载 ...
- java中的方法——重载yu重写(转)
重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. ...
- RTMP规范 消息与消息块
Real Time Messaging Protocol(实时消息传输协议) 应用层协议 RTMP协议中, 基本数据单元称为消息(Message).当RTMP协议在互联网中传输数据的时候,消息会被拆分 ...
- delete指针以后应赋值为NULL——QT deletelater指针以后也同样要马上赋值为NULL
delete p后,只是释放了指针指向的内存空间.p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址 delete NULL编译器不会报错(因为delete空指针是合法的) 例: 对一个 ...
- Read from socket failed: Connection reset by peer 问题
[FAILED] 解决方法:#chmod 600 sshd_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key#chmod 620 moduli ...
- Python RGB 和HSV颜色相互转换
转自:http://outofmemory.cn/code-snippet/1002/Python-RGB-HSV-color-together-switch Python RGB 和HSV颜色相互转 ...