android学习笔记14——GridView、ImageSwitcher
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的更多相关文章
- android学习笔记之GridView的使用
除了listview会使用适配器外,还有一种就是GridView,listview是单列多行的显示形式,适用于多项目的查看.而GridView是多行多列的显示形式,一般用在查看图片样式的activit ...
- Android学习笔记之GridView的使用具体解释
(1)创建布局代码例如以下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ...
- Android学习笔记(14):相对布局RelativeLayout
相对布局RelativeLayout,继承自ViewGroup.相对布局的子组件的位置总是相对于兄弟组件或者父容器决定的. RelativeLayout支持的XML属性: android:gravit ...
- 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...
- 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式
可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...
- 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter
目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...
随机推荐
- centos6.4安装配置vpn服务器步骤详解
centos6.4安装配置vpn服务器步骤详解,从安装VPN到配置VPN服务器.配置VPN服务器的路由转发功能,每一步都很详细 一.VPN服务器环境说明 操作系统:CentOS release ...
- ZOJ Problem Set - 3329 One Person Game
题目大意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0分析 设 E[i ...
- iOS学习笔记---oc语言第八天
属性 能在一定程度上简化代码,并且增强实例变量的访问安全性 属性的声明:使用@property声明属性 eg:@property NSSstring *name;相当于@interface中声明了两 ...
- 最小二乘法 python实现
#-*-coding:UTF-8-*- # Created on 2015年10月20日 # @author: hanahimi import numpy as np import random im ...
- 2015GitWebRTC编译实录9
2015.07.20 neteq 编译通过注意不要引用tools目录里的内容 [1347/1600 ] CXX obj /webrtc/modules/audio_coding/neteq/neteq ...
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...
- 2-1-1 GDI
主要内容:介绍Windows图形设备接口(GDI)及相关概念 1.Windows图形设备接口(GDI) <1>Windows图形设备接口(GDI),是为与设备无关的图形设计的. 所谓设备 ...
- Apache安全配置
vi /etc/httpd/conf/httpd.conf #编辑文件 ServerTokens OS 在44行修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的 ...
- Codeforces Round #339 Div.2 C - Peter and Snow Blower
Peter got a new snow blower as a New Year present. Of course, Peter decided to try it immediately. A ...
- java定时框架:表达式设置
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...