当前位置: 首页 > 编程日记 > 正文

Android 控件之ImageSwitcher图片切换器

ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊。做相册一绝

源码下载

一、重要方法

setImageURI(Uri uri):设置图片地址

setImageResource(int resid):设置图片资源库

setImageDrawable(Drawable drawable):绘制图片

二、实例

   <ImageSwitcher android:id="@+id/switcher"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
    />
   
    <Gallery android:id="@+id/gallery"
        android:background="#55000000"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
       
        android:gravity="center_vertical"
        android:spacing="16dp"
    />

is = (ImageSwitcher) findViewById(R.id.switcher);

is.setFactory(this);

设置动画效果

  is.setInAnimation(AnimationUtils.loadAnimation(this,
    android.R.anim.fade_in));
  is.setOutAnimation(AnimationUtils.loadAnimation(this,
    android.R.anim.fade_out));

三、完整代码

1.布局文件

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
   
    <ImageSwitcher android:id="@+id/switcher"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
    />
   
    <Gallery android:id="@+id/gallery"
        android:background="#55000000"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
       
        android:gravity="center_vertical"
        android:spacing="16dp"
    />

</RelativeLayout>
   2.Java代码

package wjq.WidgetDemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;

public class ImageSwitcherDemo extends Activity implements
  OnItemSelectedListener, ViewFactory {
 private ImageSwitcher is;
 private Gallery gallery;

 private Integer[] mThumbIds = { R.drawable.b, R.drawable.c,
   R.drawable.d, R.drawable.f, R.drawable.g,
   };

 private Integer[] mImageIds = { R.drawable.b, R.drawable.c,
   R.drawable.d, R.drawable.f, R.drawable.g, };

 /*
  * (non-Javadoc)
  *
  * @see android.app.Activity#onCreate(android.os.Bundle)
  */
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.imageswitcherpage);

  is = (ImageSwitcher) findViewById(R.id.switcher);
  is.setFactory(this);

  is.setInAnimation(AnimationUtils.loadAnimation(this,
    android.R.anim.fade_in));
  is.setOutAnimation(AnimationUtils.loadAnimation(this,
    android.R.anim.fade_out));

  gallery = (Gallery) findViewById(R.id.gallery);

  gallery.setAdapter(new ImageAdapter(this));
  gallery.setOnItemSelectedListener(this);
 }

 @Override
 public View makeView() {
  ImageView i = new ImageView(this);
  i.setBackgroundColor(0xFF000000);
  i.setScaleType(ImageView.ScaleType.FIT_CENTER);
  i.setLayoutParams(new ImageSwitcher.LayoutParams(
    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
  return i;
 }

 public class ImageAdapter extends BaseAdapter {
  public ImageAdapter(Context c) {
   mContext = c;
  }

  public int getCount() {
   return mThumbIds.length;
  }

  public Object getItem(int position) {
   return position;
  }

  public long getItemId(int position) {
   return position;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
   ImageView i = new ImageView(mContext);

   i.setImageResource(mThumbIds[position]);
   i.setAdjustViewBounds(true);
   i.setLayoutParams(new Gallery.LayoutParams(
     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
   i.setBackgroundResource(R.drawable.e);
   return i;
  }

  private Context mContext;

 }

 @Override
 public void onItemSelected(AdapterView<?> parent, View view, int position,
   long id) {
  is.setImageResource(mImageIds[position]);

 }

 @Override
 public void onNothingSelected(AdapterView<?> parent) {
  // TODO Auto-generated method stub

 }

}

相关文章:

【Qt】Qt5.x移植后的环境配置(imx6)

1、环境配置脚本如下 #!/bin/shexport QTDIR=/usr/lib/qt5 export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins export QT_QPA_PLATFORM=eglfs:fb=/dev/fb0 export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event1 export QT_QPAFONTDIR=/usr/lib/fonts export QML2_IM…

程序员如何避免“滴滴式裁员”悲剧?

作者 | 徐麟转载自数据森麟&#xff08;ID:shujusenlin&#xff09;滴滴于2月15日正式发表裁员公告&#xff0c;想必很多互联网人的朋友圈都已经被这条消息刷屏了&#xff0c;其中最常见的莫过于下面这张图了&#xff1a;此图一出&#xff0c;广大互联网吃瓜群众不禁后背发凉&a…

windows服务搭建及命令总结

1、图解FTP服务器搭建(Windows Server 2008) https://wenku.baidu.com/view/803bdc1759eef8c75fbfb361.html?fromsearch https://www.cnblogs.com/john2017/p/6269671.html 2、WindowsServer2008下搭建ApachePHPMySQL https://wenku.baidu.com/view/2e82b99ea1116c175f0e7cd18…

Linux下的CST和UTC时间的区别

在linux中&#xff0c;用date查看时间的时候显示&#xff1a;2008年 12月 17日 星期三 09:04:14 CSTCST China Standard Time UTC8:00 中国沿海时间(北京时间)世界协调时间(Universal Time Coordinated,UTC)GPS 系统中有两种时间区分&#xff0c;一为UTC&#xff0c;另一为LT&a…

Python之父重回决策层,未来如何发展?

作者 | 豌豆花下猫来源 | Python猫&#xff08;ID&#xff1a;python_cat&#xff09;春节假期结束了&#xff0c;大家陆续地重回到原来的生活轨道上。假期是一个很好的休息与调节的机会&#xff0c;同时&#xff0c;春节还有辞旧迎新的本意&#xff0c;它是新的轮回的开端。在…

【Android】adb命令总结

1、adb version 显示ADB工具版本 2、adb devices 查询设备&#xff0c;显示设备序列号 3、adb sideload < file_location> 通过USB进行ROM刷机 4、adb install < apk文件路径> 安装APK 5、adb uninstall <软件名> 卸载软件 6、adb push <本地路径>…

MySQL中char与varchar的区别

字符与字节的区别 一个字符由于所使用的字符集的不同&#xff0c;会并存储在一个或多个字节中&#xff0c;所以一个字符占用多少个字节取决于所使用的字符集注意&#xff1a;char与varchar后面接的数据大小为存储的字符数&#xff0c;而不是字节数&#xff08;其实是5.0版本以上…

怎样在Red Hat Enterprise Linux 5.4版本上安装GCC?

注意&#xff1a;如果打算使用GUI的方式安装&#xff0c;需要导入GPG-Key(否则在使用GUI时会出现public key for *.rpm is not installed) 请切换到安装光盘目录下&#xff1a; cd /media 可以看到 RHEL* 的目录&#xff0c;然后切换到这个目录中&#xff1a; cd RHEL* 你需要运…

【C++】mingw32-make+cmake:error: ‘nullptr‘ was not declared in this scope解决方法

###问题 使用cmake成功&#xff08;Configuring done Generating done&#xff09;后&#xff0c;在cmd终端中执行 mingw32-make报错&#xff1a; error: nullptr was not declared in this scope###原因 nullptr是在c11的新内容。编译时&#xff0c;没有添加对C11的支持。 解…

喜得爱女,吴恩达深情撰文:欢迎你来到新世界!

整理 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;一个月前&#xff0c;吴恩达冷不丁在Twitter放出了重磅消息&#xff1a; “我们的最新‘成果’ Baby Ng 即将诞生&#xff01;2019 年 2 月见面&#xff01;”果然&#xff0c;昨日吴恩达公开了首个小公主降…

FastJson 简单使用

对象、List转JsonUser user new User(); /*JSON 序列化&#xff0c;默认序列化出的JSON字符串中键值对是使用双引号&#xff0c;如果需要单引号的JSON字符串&#xff0c; [eg:String jsonString JSON.toJSONString(map, SerializerFeature.UseSingleQuotes);] *fastjson序…

【数据安全案例】交警计算机系统再遭***,交通违法记录随意删除

根据新浪报道&#xff0c;据新华社10月14日电 利用当网管的机会&#xff0c;破解密码&#xff0c;非法进入交警计算机系统为他人删除车辆交通违法记录牟利。辽宁省鞍山市铁西区检察院透露&#xff0c;当地某公司员工程尚军因涉嫌破坏计算机信息系统罪&#xff0c;已于10月初被依…

开源,还能走多远?

【编者按】在各大厂纷纷拥抱开源的当口&#xff0c;“开源代码面临可持续发展危机”的言论也甚嚣尘上。早期&#xff0c;技术爱好者们“用爱发电”&#xff0c;“他们知道在出问题前&#xff0c;没人会注意到他们&#xff0c;没人会重视他们”。但遗憾的是&#xff0c;很长一段…

使用axis开发web service服务端

一、axis环境搭建 1.安装环境 JDK、Tomcat或Resin、eclipse等. 2.到 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4 下载Axis的jar包 3.将Axis的jar包放入WEB-INF/lib目录下 二、编写web service服务端 1.编写服务 package com.webservice;public class HelloWebservice {…

【Qt】qt打印文件名、函数名、行号

#include <QDebug> #define MyDebug qDebug()<<"[FILE:"<<__FILE__<<",LINE"<<__LINE__<<",FUNC"<<__FUNCTION__<<"]

【Qt】Qt项目常用代码总结

路径 获取当前路径 #include <QCoreApplication> QString appDirPath QCoreApplication::applicationDirPath(); 转换成对应系统路径 返回路径名&#xff0c;使分隔符转换为适合底层操作系统的分隔符。 windows下为“\”; linux下为“/” #include <QDir> a…

滴滴裁员补偿丰厚,员工称裁出幸福感?

整理 | 一一出品 | AI科技大本营&#xff08;rgznai100&#xff09;滴滴裁员的“靴子”正在逐步落地。据《财经》报道&#xff0c;滴滴近日已给出裁员的具体赔偿方案&#xff1a;补偿一般为 N1 个月&#xff0c;如果本周能确认&#xff0c;再额外给一个月补偿——这一个月补偿是…

shell编程基础

1. 程序的执行风格 程序编程风格&#xff1a;过去式&#xff1a;以指令为中心&#xff0c;数据服务于指令。对象式&#xff1a;以数据为中心&#xff0c;指令服务于数据。过程式编程有以下特点&#xff1a;1&#xff09; 顺序执行&#xff1a;指程序在执行的过程中&#xff0c;…

【Qt】QImage使用总结

图像格式转换 由 RGB 格式转换成 BGR 格式 QImage::rgbSwapped() 返回一个QImage,其中所有像素的红色和蓝色组件的值被交换,有效地将RGB图像转换为BGR图像。 QImage image(fileName); QImage bgr = image.rgbSwapped();将彩色图转换成 灰度图 使用QImage::convertToForma…

访问量最高超7百万的Stack Overflow问题竟然是...

整理 | Jane出品 | AI科技大本营&#xff08;公众号id&#xff1a;rgznai100&#xff09;Stack Overflow&#xff0c;一个面向开发者的 IT 技术问答网站&#xff0c;很多程序员都会在上面提问&#xff0c;浏览问题&#xff0c;查找技术知识。在 Top Question 页面&#xff0c;我…

CentOS 6.9下配置安装KVM

注意&#xff1a;KVM一切安装和运行都是在root用户下完成的&#xff0c;并且只有root才能支持某些软件。 一、准备工作&#xff1a; 1、查看系统版本、内核版本 ##查看系统版本 # cat /etc/redhat-release CentOS release 6.4 (Final) ##查看内核版本 # uname -a Linux KVM 2.6…

感觉要大病一场了

呵呵&#xff0c;这两天很累&#xff0c;再加上天气的原因&#xff0c;整个人晕乎乎的&#xff0c;其实很累&#xff0c;可就是睡不着&#xff0c; 其实我不知道是身体的累&#xff0c;还是心累了&#xff0c;总之&#xff0c;整个人就是提不起做事的激情来一个人就这样浑浑噩噩…

【视频】使用VLC采集摄像头,以RTSP协议发送流到网络上

VLC官网 http://www.videolan.org/ VLC3.0.1搭建失败 本人使用VLC3.0.1,搭建失败,总报无法打开URL VLC2.1.5搭建成功 VLC2.1.5官网地址及下载地址 www.videolan.org/vlc/releases/2.1.5.html http://get.videolan.org/vlc/2.1.5/win32/vlc-2.1.5-win32.exe 搭建RTSP …

优质中文NLP资源集合,做项目一定用得到!

整理 | Jane出品 | AI科技大本营&#xff08;公众号id&#xff1a;rgznai100&#xff09;今天要给大家在推荐 Github 上一个优质的中文 NLP 工具和资源集合项目——funNLP&#xff0c;已经获得了 5.3k Stars&#xff0c;1k Forks。项目作者 杨洋&#xff0c;一枚水博&互联网…

小程序:js获取验证码时(倒计时模块)

代码例子截图最近在上手开发小程序&#xff0c;发现其实小程序要比vue真的要简单太多了&#xff0c;有一套自己的html(WXML)&#xff0c;css(WXSS)&#xff0c;虽然有些标签不能直接沿用html5的标签来开发&#xff0c;不过内置的标签还是很好记也不多。今天在做公司的项目时&am…

十大经典排序算法动画与解析,看我就够了

作者 | 程序员小吴转载自五分钟学算法&#xff08;ID: CXYxiaowu&#xff09;排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记…

Crystal Reports 财务日记帐凭证套打设计

Crystal Reports 财务日记帐凭证套打设计 一、首先大家看下财务日记帐凭证的纸张格式&#xff1a; 下面我们来分析下有几点要素&#xff1a;1、每页显示5行记录&#xff0c;2、就是在合计处的中文金额大写了。其他页眉页脚在水晶报表中很容易设计。 二、报表设计&#xff1a;在…

oozie调度中的重试和手工rerun一个workflow

在oozie中有Bundle、Coordinator和Workflow三种类型的job&#xff0c;他们之间可以有以下包含关系。 Bundle > Coordinator > Workflow。 1. 重新运行一个Coordinator job&#xff0c;可以通过如下命令&#xff1a; oozie job -rerun 0000034-180116183039102-oozie-hado…

【Qt】在Qlayout中Qlabel::setScaledContents(true);失效

Qlabel中添加图片,并使图片自适应Qlabel的大小 QPixmap picture;picture.load("./1.jpg");ui->label->setScaledContents(true);//图片自适应label大小ui->label->setPixmap(picture); 在layout中Qlabel::setScaledContents(true);失效 解决办法,set…

JavaScript写XML

引用地址&#xff1a;http://zhidao.baidu.com/question/76344574.html?frala0 load 方法 作 用表示从指定位置加载的文件。 基本语法boolValue &#xff1d; xmlDocument.load(url);说 明url 包含要被加载档案的URL 的字符串。假如文件加载成功&#xff0c;传回值即为t…