Android之ImageSwitcher
要点:
(查看Api总结)
1:ImageSwitcher 继承 ViewSwitcher, (ViewSwitcher 有继承FrameLayout )
2: 要实现切图必须实现 ViewSwitcher.ViewFactory接口中的 makeView()
易错点:
1:
mImageSwitcher.setFactory(this);
mImageSwitcher.setImageResource(mImages[0]);
setImageResource必须调用在setFactory之后。 原因:根据源码分析调用setFactory获得接口,才能
获得makeView()返回的view 否则抛空指针异常
2: 在makeView中设置布局参数 要用FrameLayout布局参数
package com.imageswitcher; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import android.widget.ViewSwitcher; public class MainActivity extends Activity implements ViewSwitcher.ViewFactory { private LinearLayout mLinearLayout;
private ImageSwitcher mImageSwitcher; private Integer[] mImages = {R.drawable.android01, R.drawable.android02, R.drawable.android03, R.drawable.android04,
R.drawable.android05, R.drawable.android06, R.drawable.android07, R.drawable.android08, R.drawable.android09}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView();
mImageSwitcher.setFactory(this);
mImageSwitcher.setImageResource(mImages[0]);
mImageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
mImageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); for (int i = 0; i < mImages.length; i++) {
mLinearLayout.addView(getImageView(i));
}
} private ImageView getImageView(final int i) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(mImages[i]);
imageView.setId(i);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mImageSwitcher.setImageResource(mImages[i]);
Toast.makeText(v.getContext(), "选择了" + (v.getId() + 1) + "张图", Toast.LENGTH_SHORT).show();
}
}); return imageView;
} private void initView() {
mLinearLayout = (LinearLayout) findViewById(R.id.linearLayout);
mImageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
} @Override
public View makeView() {
ImageView imageView = new ImageView(this);
Log.i(MainActivity.class.getSimpleName(), "第几次调用");
imageView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
return imageView;
}
}
xml
<RelativeLayout 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"
tools:context=".MainActivity"> <ImageSwitcher
android:id="@+id/imageSwitcher"
android:layout_width="match_parent"
android:layout_height="200dp"> </ImageSwitcher> <HorizontalScrollView
android:layout_below="@id/imageSwitcher"
android:layout_width="match_parent"
android:layout_height="100dp"
> <LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"> </LinearLayout> </HorizontalScrollView>
</RelativeLayout>
Android之ImageSwitcher的更多相关文章
- 【Android 界面效果30】Android中ImageSwitcher结合Gallery展示SD卡中的资源图片
本文主要是写关于ImageSwitcher结合Gallery组件如何展示SDCard中的资源图片,相信大家都看过API Demo 中也有关于这个例子的,但API Demo 中的例子是展示工程中Draw ...
- 从零開始学android<ImageSwitcher图片切换组件.二十六.>
ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候.能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够 ...
- Android的ImageSwitcher和TextSw-android学习之旅(三十四)
ImageSwitcher简介 ImageSwitcher继承了ViewSwitcher,所以在切换时候会有动画,可以把它理解成一个动画版本的ImageView. 他的showNext(),和show ...
- android ImageSwitcher
<?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android=&q ...
- android学习笔记14——GridView、ImageSwitcher
GridView--网格视图.ImageSwitcher--图像切换器 ==> GridView,用于在界面上按行.列的分布形式显示多个组件:GridView和ListView父类相同——Abs ...
- Android 高级UI设计笔记12:ImageSwitcher图片切换器
1. ImageSwitcher ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊.做相册一绝 2. 重要方法 setImageURI(Uri ...
- Android 自学之网格试图(GridView)和图片切换器(ImageSwitcher)功能和用法
网格试图(GridView)用于在界面上按行,列分布的方式来显示多个组件. GridView和ListView有共同的父类:AbsListView,因此GridView和ListView具有一定的相似 ...
- 得知Android小遴选程序第七头(他们定义对话框、Gallery、ImageSwitcher)
效果如下面的: 一共一个activity和两个xml. ******当我们须要使用的组件不在setContentView()设置的布局文件里,那我们就须要使用inflate()方 ...
- android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)
GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView. GridView与ListView的差别在于:ListV ...
随机推荐
- win10删除导航栏文档等图标,去除快捷方式
去除快捷方式字样 找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer],在右侧窗格新建或修改名为“link” ...
- lambda匿名函数
1.python中的匿名函数的格式 lambda arg1,arg2...,argN:expression (lambda关键字后,冒号":"前是参数,多个参数用逗号&qu ...
- 26 Time Management(转)
01. There is alway time. Time is priorities. 时间常有.时间优先. 02. Days always fill up. 时间总会有的. Only plan f ...
- 生成CIL的问题
private void testILMethod() { InventCountPlanLine planLine; ; update_recordSet planLine setting Coun ...
- php后台权限管理
今天新到一家公司,重新维护升级了之前的权限管理. 权限管理思路:1.三张表(公司项目比较复杂,所以数据表远比这个复杂,这里只实现权限管理,简化一下)action表------权限大菜单:这个表没有实际 ...
- RHCA-红帽认证架构师
OpenStack: 向部署应用 配置域.数据源子系统.中实施应用安全 迁移应用至 介绍集群 考试代码 任选其中五门: (红帽企业虚拟化) (红帽企业部署和系统管理) (红帽企业服务器硬化) (红帽企 ...
- underscore.js库的浅析
Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文称“Underscore对象”).生成一个Underscore对象: ...
- ajaxfileupload.js的简单使用
上传文件 未选择任何文件 引入 <script src="../javaScript/ajaxfileupload.js"></script> <bu ...
- 开始学java痛苦之旅开启 12-31日 第一章节笔记
1.JDK,Java development kit,开发环境(JDK)2.JRE 是Java运行环境 (Java Runtime Enviroment) 的缩写 我的电脑--属性--工具--文件夹选 ...
- C#批量插入数据到Sqlserver中的三种方式
本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...