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 ...
随机推荐
- 手持机(Android)开发应用总结
对于首次接触android的我,刚接到android开发的命令时,自己完全不懂任何android技术,可是由于项目的开发时间周期很短,必须强迫自己即学即用,到了最后才发现,技术其实只是工具,重要的是一 ...
- 1.mysql基础之 php 连接
1.连接数据库 $db=@mysql_connect('DB_HOST','DB_USER','DB_PASS') or die("Unable to connect"); DB_ ...
- centos6.5 用户管理
linux 用户管理 命令:useradd 选项: -c comment 备注信息 -d 用户目录 usr/test 不存在 则 -m test 创建 -s shell文件,指定用户的登录Shell. ...
- VS CODE 下的 ESLint 安装以及使用
经过半年的前端磨练(就是不停地敲敲代码),自认水平提高的速度还是可以的. 现在回头看下写过的代码,发现以前写的代码真的是不忍惨睹. 比如 变量名乱起 风格多变 注释乱写或者没写 等等错误; 这不是一个 ...
- docker在ubuntu14.04下的安装笔记
本文主要是参考官网教程进行ubuntu14.04的安装. 下面是我的安装笔记. 笔记原件完整下载: 链接: https://pan.baidu.com/s/1dEPQ8mP 密码: gq2p
- SpringMVC学习笔记(二)
一.HandleMapping和HandlerAdapter的讲解 HandleMapping:处理映射器,可以理解为为请求的url查找对应的Controller类. HandlerAdapter:可 ...
- HTTP权威协议笔记-4.连接管理
4.1 TCP连接 TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下: 浏览器解析主机名. 查询这个主机名的IP地址(DNS) 获得端口号. 浏览器对服务器该端口号发起连接. ...
- Des加解密算法
class DesHelper { /// <summary> /// DES加密方法 /// </summary> ...
- 大型网站一致性的基础理论---CAP/BASE
最近在看<大型网站系统与java中间件事件>这本书,收获颇多. 分布式事务希望在多机环境下可以像单机系统那样做到强一致,这需要付出比较大的代价.而在有些场景下,接受状态并不用时刻保持一致, ...
- SQL SELECT 语句
本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SE ...