android相册幻灯片功能,Android实现幻灯片式图片浏览器
我们来实现一个幻灯片式图片浏览器:
最下面一个画廊视图,选中画廊中的图片,会在上面的ImageSwitcher控件中显示大图。
效果图如图
实现方法:
在布局文件中添加图片切换控件ImageSwitcher和画廊视图控件Gallery
res/layout/main.xml:
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout1"
android:gravity="center_horizontal"
>
android:id="@+id/imageSwitcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="30px"
android:layout_weight="2"/>
android:id="@+id/gallery1"
android:spacing="5px"
android:layout_weight="1"
android:unselectedAlpha="0.6"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
在res/values目录中,创建一个名为attr.xml的文件,在该文件中定义一个styleable对象,用于组合多个属性。这里只指定了一个系统自带的android:galleryItemBackground属性,用于设置各选项的背景。具体代码如下:
res/values/attr.xml:
MainActivity:
package com.example.test;
import android.app.Activity;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity {
//定义并初始化保存图片id的数组
private int[] imageId=new int[]{R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,
R.drawable.img5,R.drawable.img6,R.drawable.img7,R.drawable.img8,R.drawable.img9};
//声明一个图像切换器对象
private ImageSwitcher imageSwitcher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery gallery=(Gallery)findViewById(R.id.gallery1);//获取gallery组件
imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher);//获取图像切换器
//设置动画效果
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));//设置淡入动画
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));//设置淡出动画
imageSwitcher.setFactory(new ViewFactory(){
@Override
public View makeView() {
ImageView imageView=new ImageView(MainActivity.this);//实例化一个imageView类的对象
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//设置保持纵横比居中缩放图像
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
return imageView;//返回imageView对象
}
});
BaseAdapter adapter=new BaseAdapter(){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;//声明ImageView的对象
if(convertView==null){
imageView=new ImageView(MainActivity.this);//实例化ImageView的对象
imageView.setScaleType(ImageView.ScaleType.FIT_XY);//设置缩放方式
imageView.setLayoutParams(new Gallery.LayoutParams(180,135));
//设置gallery每一项图片的背景资源(使用的是attr.xml的自定义样式)
TypedArray typedArray=obtainStyledAttributes(R.styleable.Gallery);
imageView.setBackgroundResource(typedArray.getResourceId(
R.styleable.Gallery_android_galleryItemBackground, 0));
imageView.setPadding(5, 0, 5, 0);//设置imageView的内边距
}else{
imageView=(ImageView)convertView;
}
imageView.setImageResource(imageId[position]);//为imageView设置要显示的图片
return imageView;//返回ImageView
}
//功能:获得当前选项的id
@Override
public long getItemId(int position) {
return position;
}
//功能:获得当前选项
@Override
public Object getItem(int position) {
return position;
}
//获得数量
@Override
public int getCount() {
return imageId.length;
}
};
gallery.setAdapter(adapter);//将适配器与Gallery关联
gallery.setSelection(imageId.length/2);//选中中间的图片
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View v,
int position, long id) {
imageSwitcher.setImageResource(imageId[position]);//显示选中的图片
}
@Override
public void onNothingSelected(AdapterView> arg0) {
// TODO Auto-generated method stub
}
});
}
}
这样单击某张图片,可以选中该图片,并且让其居中显示,也可以用手指拖动图片来移动图片,并且让选中的图片在上方显示,如图是切换瞬间的效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android相册幻灯片功能,Android实现幻灯片式图片浏览器相关推荐
- Android幻灯片式图片浏览器
今天我们通过使用Android提供给我们的现有空间Gallery和ImageSwitcher来实现一个幻灯片式的图片浏览器. (1)首先我们新建一个工程,修改主布局文件activity_main.xm ...
- android相册幻灯片功能,玩机教程 篇四十五:「MIUI玩机技巧63」MIUI相册新增“幻灯片播放”功能...
玩机教程 篇四十五:「MIUI玩机技巧63」MIUI相册新增"幻灯片播放"功能 2020-02-17 16:15:35 0点赞 0收藏 0评论 本帖主要解决2大问题: 1) 功能科 ...
- Android 相册图库功能,按时间排序
TimeAlbum 时间相册 功能说明 1.图片和视频资源根据日期排序显示. 2.图片视频预览功能,图片.视频预览带缓存功能. 3.单个图片或视频可进行删除及分享操作. 4.多张图片进行分享功能,多张 ...
- android的UDC功能,Android实现搜索历史功能
本文实例为大家分享了Android实现搜索历史的具体代码,供大家参考,具体内容如下 SharedPreferences实现本地搜索历史功能,覆盖搜索重复的文本,可清空 1. 判断搜索内容是否含表情,不 ...
- android 添加附件功能,Android实现带附件的邮件发送功能
本文实例讲解了基于基于jmail实现android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助gmail app客户端,缺点是必须使用gmail帐号 ...
- android sharesdk分享功能,Android ShareSDK快速实现分享功能
第一步 :获取ShareSDK 为了集成ShareSDK,您首先需要到ShareSDK官方网站注册并且创建应用,获得ShareSDK的Appkey,然后到SDK的下载页面下载SDK的压缩包,解压以后可 ...
- android系统应用功能,Android系统应用(12)
如何成为系统应用 方法一:在Manifest中声明android:sharedUserId的值为:android.uid.system,android.uid.phone,android.uid.lo ...
- android放微信@功能,Android仿微信语音消息的录制和播放功能
一.简述 效果: 实现功能: 长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态生成录音文件,开始录音: 监听手指动作,规定区域.录音状态下手指划出规定区域取消录音,删 ...
- android 本地提醒功能,android中的本地定时推送到通知栏
一.使用系统定义的Notification 以下是使用示例代码: import android.app.Notification; import android.app.NotificationMan ...
最新文章
- 设计模式之建造者模式(生成器模式、Builder)摘录
- javascript 运算+
- asp.net C# 实现上传Excel文件导入数据到SQL Server 数据库
- spring boot 读取 application.properties 初始化bean
- Android 系统文件夹功能(转)
- 如何让DataGrid能够在客户端点击某一行的任意位置,而触发服务端的事件(Asp.net)...
- 常见的数据库连接字符串收集
- HYSBZ/BZOJ 1007 [HNOI2008] 水平可见直线 - 计算几何
- markdownpad 2 的使用
- js常用分割取字符串的方法
- java对字符串集合按字符串长度排序
- 用Jupyter—Notebook爬取网页数据实例1
- 怎么把PWM信号转为模拟量
- 什么是机器人编程课程
- 中国成全球最大工业机器人市场 年增长速度25%
- Android 集成Thinker 教程
- 颜值,配不上你的才华
- arcgis几何修复有作用吗_ArcGIS修复几何错误
- 5G+4G多卡聚合路由器在视频直播中的解决方案
- 2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
热门文章
- opencv mat初始化_【OpenCV入门之十二】看起来一样的图像竟然存在这么大的差别!...
- PHP允许输入负数,php exec在linux中返回值不能为负数
- Python基础(二)--数据类型,运算符与流程控制
- java 钩子线程_java-钩子线程
- 从朴素贝叶斯到贝叶斯网
- 阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较
- 领域应用 | 金融资管领域知识图谱的构建和应用
- 论文浅尝 | 基于平行新闻的Bootstrapping关系抽取
- 科大讯飞2020完整事件抽取系统(bert+数据集)
- Android官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态