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 ...
随机推荐
- for循环语句
for循环格式: for(表达式1:表达式2:表达式3) { 循环语句 } 1.首先计算表达式1的值. 2.再计算表达式2 的值,若值为真(非0) ...
- ArrayList原理解析
简介 ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处 有图有码 图 ...
- C# 校验帮助类-正则表达式
一.简介 很多时候我们都需要用到一些验证的方法,有时候需要用正则表达式校验数据时,往往需要到网上找很久,结果找到的还不是很符合自己想要的.所以我把自己整理的校验帮助类分享处理,在这里分享一下,给自己留 ...
- 简单来说一下ui-route
UI-Router被认为是AngularUI为开发者提供的最实用的一个模块,它是一个让开发者能够根据URL状态或者说是'机器状态'来组织和控制界面UI的渲染,而不是仅仅只改变路由(传统AngularJ ...
- ArchSummit全球架构师峰会2017年深圳站 漫谈
自去年6月跳槽到某CDN厂,从偏向移动端开发又回到了专注后端,关于做一个移动应用独立开发者的计划暂时搁置,但是如马云所讲: "梦想还是要有的,万一实现了呢".去年下半年辛苦加班加点 ...
- 使用ant自动构建apk
最近因渠道过多,需要单独接入渠道支付sdk的渠道也很多,而首发在即.人手不足,所以着手了部分相关的工作,看了下目前的操作流程..无奈人比较懒,所以决定进行一波简化的技术,先考虑到了两种方案: 1)脚本 ...
- Jersey +jetty 实现微服务(一)
微服务: 传输协议基本都是http,数据序列化,协议层目前protocol buffer,Json, xml,Java序列化,最多使用Json.实现以上二点并不难,spring 就可以,但spr ...
- Excel导出百万级数据解决方案
因项目业务,需要导出百万级数据到excel,在研究了各种方案后,最终确定了用POI的SXSSFWorkbook. SXSSFWorkbook是POI3.8以上新增的,excel2007后每个sheet ...
- 怎么在linux ubuntu 上的nginx 绑定域名
前一篇介绍了,如果在ubuntu上运行nodejs,毕竟访问的时候都是用ip地址+端口号,但是上production 环境都需要域名的,IP地址当然不行 读过上一篇的朋友知道了,如果在upstart ...
- git创建版本库以及使用
Git使用教程(摘自tugenhua0707) 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央 ...