android学习Gallery和ImageSwitch的使用
Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了,
* @deprecated This widget is no longer supported. Other horizontally scrolling
* widgets include {@link HorizontalScrollView} and {@link android.support.v4.view.ViewPager}
* from the support library.
取而代之的是 HorizontalScrollView,也就是横向的ScrollView 和 ViewPager,这两种组件前面都有了解到。
Gallery和那些ListView 等都一样需要将资源加载进适配器,然后通过SetAdapter给控件设置适配器。
1,自定义一个适配器 继承自BaseAdapter
package com.example.lining.gallery; import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView; import java.util.List; /**
* Created by lining on 2015/11/27.
*/
public class ImageAdapter extends BaseAdapter {
private int[]res;
private Context context;
public ImageAdapter(int[]res,Context context){
this.res = res;
this.context = context;
}
@Override
public int getCount() {
return res.length;
}
@Override
public Object getItem(int position) {
return res[position];
} @Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(res[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(300, 200));//设置ImageView的宽和高
imageView.setScaleType(ImageView.ScaleType.FIT_XY);//采用横向和纵向拉伸
return imageView;
}
}
2,设置适配器,并相应监听事件OnItemSelectListening
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
private int []res={R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a5,R.drawable.a6};
private Gallery gallery;
private ImageAdapter imageAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery = (Gallery)findViewById(R.id.gallery);
imageAdapter = new ImageAdapter(res,this);
gallery.setAdapter(imageAdapter);
gallery.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
这时我们可以在 onItemSelected响应函数中打印出我们选择的图片信息,onNothingSelected是只要其他的选项没有被选择就会被触发
现在我们让选择的图片用ImageSwitch显示出来
ImageSwitch 和ImageView的功能有点类似,它们都可以用于显示图片,区别是ImageSwitch的效果更炫,他可以
指定图片切换时的效果
ImageSwitch粗略的理解就是ImamgeView的选择器,他需要设置ViewFactory的方法,我们让ViewFactory的makeView方法返回
ImageView
3,在xml中加入ImageSwitch标签,并且设置淡入淡出的效果
imageSwitcher = (ImageSwitcher)findViewById(R.id.iamgeSwitch);
imageSwitcher.setFactory(this);
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
同时需要实现ViewFactory的 ViewSwitcher.ViewFactory的监听事件
@Override
public View makeView() {
ImageView imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.CENTER);//等比例的缩放
return imageView;
}
4,这时一切都准备好了,只需要在Gallery的选择事件中设置ImageSwitch的资源就可以了
imageSwitcher.setBackgroundResource(res[position]);
android学习Gallery和ImageSwitch的使用的更多相关文章
- android学习---Gallery画廊视图
Gallery与Spinner有共同父类:AbsPinner.说明Gallery与Spinner都是一个列表框. 它们之间的差别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是 ...
- android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器
为了使图片浏览器左右无限循环滑动 我们要自己定义gallery的adapter 假设要想自己定义adapter首先要了解这几个方法 @Override public int getCount() { ...
- Android之Gallery和Spinner-Android学习之旅(二十九)
Spinner简介 spinner是竖直方向展开一个列表供选择.和gallery都是继承了AbsSpinner,AbsSpinner继承了AdapterView,因此AdaptyerView的属性都可 ...
- Android学习之Gallery
在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动.Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最 ...
- android学习系列:jercy——AI3 的博客
[android学习之十七]——特色功能2:桌面组件(快捷方式,实时文件夹) 二.桌面组件 1.快捷方式 Android手机上得快捷方式的意思可以以我们实际PC机器上程序的快捷方式来理解.而andro ...
- 《Android学习指南》目录
源:<Android学习指南>目录 Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这 ...
- 《Android学习指南》文件夹
转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不 ...
- Android学习路线总结,绝对干货
title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...
- Android 学习资源
下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android ...
随机推荐
- 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问
根据需要进行asp.net的数据导入导出,结果报以下错: mark-1: [报错]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT ...
- kbengine新手教程
KBEngine服务端引擎开源项目地址(github):https://github.com/kbengine/kbengine引擎下载与编译:http://kbengine.org/cn/docs/ ...
- Java IO学习笔记(五)对象流
1.Object流:直接将Object写入或读出. 2.序列化:将Object直接转化成字节流写到硬盘或网络上. 3.如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口 ...
- 是否使用安全模式启动word
打开word,出现了一个提示,显示着“word遇到问题需要关闭.我们对此引起的不便表示抱歉.”下面有选项“恢复我的工作并重启word”,选中它.点下面的“不发送”. 在出现的提示 ...
- Luogu T7152 细胞(递推,矩阵乘法,快速幂)
Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...
- Jersey +jetty 实现微服务(一)
微服务: 传输协议基本都是http,数据序列化,协议层目前protocol buffer,Json, xml,Java序列化,最多使用Json.实现以上二点并不难,spring 就可以,但spr ...
- java基础03 位运算符
位运算是对整数的二进制位进行相关操作,详细运算如下: 非位运算值表 A ~A 1 0 0 1 与位运算值表 A B A&B 1 1 1 1 0 0 0 1 0 0 0 0 或位运算值表 A B ...
- hdu_3336: Count the string(KMP dp)
题目链接 题意:求给定字符串中,可以与某一前缀相同的所有子串的数量 做这道题需要明白KMP算法里next[]数组的意义 首先用一数组nex[](这里与之前博客中提到的next明显不同)存储前缀后缀最长 ...
- THINKPHP 3.2 PHP SFTP上传下载 代码实现方法
一.SFTP介绍:使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议.区别:sftp是ssh内含的协议(ssh是加密的telnet协议), 只要sshd服 ...
- Python进阶——笔记1
1.*args 的用法 *args 和 **kwargs 主要用于函数定义. 你可以将不定数量的参数传递给一个函数. 这里的不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场 ...