viewpage显示服务器图片,照片查看器——ViewPager实现的图片展示控件
1.使用场景
需要使用到照片查看功能的时候
2.效果
缩放动画.gif
完整过程和平移动画.gif
3.思路
PhotoPagerView的思路.png
实现思路其实很简单,利用已知的ViewPager和PhotoView 组合成新的控件,迎合日常的开发需求。
GitHub地址:https://github.com/mCyp/PhotoPagerView
4.代码
关于代码这一块的话并不打算介绍了,因为这是一个初级库,代码简单,整合出来只是为了项目的需要,想要代码的话可以直接查看源码。
5.使用
传入的参数说明:先传入bitmaps再配置当前的需要使用的属性。
List bitmaps = ...;
PhotoPageView pageView = new PhotoPageView.Builder(MainActivity.this)
.addBitmaps(bitmaps) // 传入Bitmaps
.showDelete(true) // 是否可以删除
.setDeleteListener(new PhotoPageView.DeleteListener() {
@Override
public void ondelete(int position) {
// 删除指定位置之后的回调
Toast.makeText(MainActivity.this,"删除的位置是:"+position,Toast.LENGTH_SHORT).show();
}
})
.showAnimation(true) // 是否显示动画
.setAnimationType(PhotoPageView.ANIMATION_TRANSLATION) // 动画的类型
.setStartPosition(0) // 设置起始的位置
.create();
pageView.show();
动画类型:
ANIMATION_SCALE_ALPHA 缩放透明度动画
ANIMATION_TRANSLATION 平移动画
6.注意
因为使用到了Bitmap,所以得注意一下OOM的问题,库里面的FileUtils工具类提供了解决办法,详见代码:位置,你也可以使用该方法通过提供一个地址,解析出你需要的List,
代码:
/**
get bitmaps
*/
public static List getAlbumByPath(String path, String Extension, Activity activity) {
List bitmaps = new LinkedList<>(); //结果 List
File[] files = new File(path).listFiles();
if (files == null)
return null;
InputStream inputStream = null;
try {
for (File f : files) {
if (f.isFile()) {
if (f.getPath().substring(f.getPath().length() - Extension.length()).equals(Extension)) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.inPreferredConfig = Bitmap.Config.RGB_565;
inputStream = new FileInputStream(f);
BitmapFactory.decodeStream(inputStream, null, options);
options.inSampleSize = calculateInSampleSize(options,activity.getWindow().getDecorView().getWidth(),activity.getWindow().getDecorView().getHeight());
options.inJustDecodeBounds = false;
inputStream = new FileInputStream(f);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);
if (bitmap != null) {
bitmaps.add(bitmap);
}
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bitmaps;
}
/*
to prevent oom
*/
public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height / 2;
final int halfWidth = width / 2;
while ((halfHeight / inSampleSize) >= reqHeight
&& (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
总结
大概内容就是这样了,有问题可以提出。地址:PhotoPagerView
viewpage显示服务器图片,照片查看器——ViewPager实现的图片展示控件相关推荐
- win10照片查看器_win10系统,图片查看器不见了咋办?教你调出传统图片查看器。...
点击上方"高效黑科技软件"→点击右上角" ... "→选"设为星标★" 大家好,我是小黑. 最近比较忙,没有打理公众号,今天说啥也要更一篇, ...
- 计算机照片无法打开,提示windows照片查看器无法打开此图片怎么处理
你好! 建议: 一.将存储卡从相机中取出插入读卡器,连接电脑,启动电脑上的杀毒软件进行一次全面扫描杀毒: 只要杀毒软件升级为最新的病毒库,就基本上可以清除存储卡上的病毒,而且一般不会损坏照片文件. 二 ...
- 打开微信另存的 jpg 图片时,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足”
问题描述: 打开微信另存的 jpg 图片或者通过微信拍照上传的图片时,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足",出现以下信息 解决方案: 目 ...
- jQuery 图片查看插件 Magnify 开发简介(仿 Windows 照片查看器)
前言 因为一些特殊的业务需求,经过一个多月的蛰伏及思考,我开发了这款 jQuery 图片查看器插件 Magnify,它实现了 Windows 照片查看器的所有功能,比如模态窗的拖拽.调整大小.最大化, ...
- cbitmap 从内存中加载jpg_[转载]windows照片查看器无法显示图片内存不足
问题描述 最近在使用Windows照片查看器打开一个jpg文件的时候异常 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果 ...
- java图片识别查看器模拟_[转载]windows照片查看器无法显示图片内存不足
问题描述 最近在使用Windows照片查看器打开一个jpg文件的时候异常 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果 ...
- html图片通过照片查看器打开图片,在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上...
在Windows7中打开照片,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满),然后重试. ...
- win10照片查看器_解决“Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足……”...
解决"Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足--" 估计现在有许多人和疑惑 使用系统自带Windows照片查看器打开图片时 部分图片图片会显示会显示 ...
- Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足的最好解决办法。
Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足的最好解决办法. 1.打开我的脑,点击控制面板. 2.点击程序(右上角查看方式选择类别). 3.点击默认程序. 4.点击设置默认程 ...
最新文章
- 【POI word】使用POI实现对Word的读取以及生成
- 怎样用计算机算分数乘分数,《分数乘分数》教案.pdf
- 【机器学习】opencv-数据预处理
- FLEX开发人员中心部分下载
- 四十六 常用内建模块 itertools
- Physical Standby Database Failover
- viewDidUnload方法的离去和替代
- 【设计模式】java设计模式总述及观察者模式
- 图像分割并存储 matlab,用于面积增长的Matlab图像分割程序
- 易优cms设置完伪静态之后,产品板块出现404
- Matlab将散点绘制为平滑曲线的简单方法
- 基金收益率计算5:金额加权收益率(MWRR)和时间加权收益率(TWRR)
- html为标题添加脚注,如何在rmarkdown html中的特定标题下放置脚注?
- 王德顺《追求自由的亡命徒》
- an error occurred while creating opening the c++ browsing database 解决办法
- JavaIO—Day21
- 最近爆火的电子血氧仪是什么原理?测的准吗?
- Windows日志查看工具分享
- 最后介绍几个对程序员非常重要的24个软技能
- 计算机网络知识点总结(计网期末盲押系列)
热门文章
- 循环神经网络--RNN--Sequence(时间序列)
- python0加到100_Python之0加到100
- Android4.2Email源码流程解析
- 串行通信 软件仿真STM32与74LS164通信
- 根据输入的年份、产品类型和随机数产生固定资产编号 即:固定资产编号=年份+0+产品类型+3位随机数 程序运行流程:请输入年份: …… 请
- 计算机网络实验(一)Packet Tracer介绍
- 关于开发中耦合度的强弱顺序
- TinyXml使用详解
- python+selenium之等待时间(三种)
- CleanMyMac X系统mac提速加速的办法