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实现的图片展示控件相关推荐

  1. win10照片查看器_win10系统,图片查看器不见了咋办?教你调出传统图片查看器。...

    点击上方"高效黑科技软件"→点击右上角" ... "→选"设为星标★" 大家好,我是小黑. 最近比较忙,没有打理公众号,今天说啥也要更一篇, ...

  2. 计算机照片无法打开,提示windows照片查看器无法打开此图片怎么处理

    你好! 建议: 一.将存储卡从相机中取出插入读卡器,连接电脑,启动电脑上的杀毒软件进行一次全面扫描杀毒: 只要杀毒软件升级为最新的病毒库,就基本上可以清除存储卡上的病毒,而且一般不会损坏照片文件. 二 ...

  3. 打开微信另存的 jpg 图片时,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足”

    问题描述: 打开微信另存的 jpg 图片或者通过微信拍照上传的图片时,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足",出现以下信息 解决方案: 目 ...

  4. jQuery 图片查看插件 Magnify 开发简介(仿 Windows 照片查看器)

    前言 因为一些特殊的业务需求,经过一个多月的蛰伏及思考,我开发了这款 jQuery 图片查看器插件 Magnify,它实现了 Windows 照片查看器的所有功能,比如模态窗的拖拽.调整大小.最大化, ...

  5. cbitmap 从内存中加载jpg_[转载]windows照片查看器无法显示图片内存不足

    问题描述 最近在使用Windows照片查看器打开一个jpg文件的时候异常 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果 ...

  6. java图片识别查看器模拟_[转载]windows照片查看器无法显示图片内存不足

    问题描述 最近在使用Windows照片查看器打开一个jpg文件的时候异常 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果 ...

  7. html图片通过照片查看器打开图片,在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上...

    在Windows7中打开照片,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满),然后重试. ...

  8. win10照片查看器_解决“Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足……”...

    解决"Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足--" 估计现在有许多人和疑惑 使用系统自带Windows照片查看器打开图片时 部分图片图片会显示会显示 ...

  9. Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足的最好解决办法。

    Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足的最好解决办法. 1.打开我的脑,点击控制面板. 2.点击程序(右上角查看方式选择类别). 3.点击默认程序. 4.点击设置默认程 ...

最新文章

  1. 【POI word】使用POI实现对Word的读取以及生成
  2. 怎样用计算机算分数乘分数,《分数乘分数》教案.pdf
  3. 【机器学习】opencv-数据预处理
  4. FLEX开发人员中心部分下载
  5. 四十六 常用内建模块 itertools
  6. Physical Standby Database Failover
  7. viewDidUnload方法的离去和替代
  8. 【设计模式】java设计模式总述及观察者模式
  9. 图像分割并存储 matlab,用于面积增长的Matlab图像分割程序
  10. 易优cms设置完伪静态之后,产品板块出现404
  11. Matlab将散点绘制为平滑曲线的简单方法
  12. 基金收益率计算5:金额加权收益率(MWRR)和时间加权收益率(TWRR)
  13. html为标题添加脚注,如何在rmarkdown html中的特定标题下放置脚注?
  14. 王德顺《追求自由的亡命徒》
  15. an error occurred while creating opening the c++ browsing database 解决办法
  16. JavaIO—Day21
  17. 最近爆火的电子血氧仪是什么原理?测的准吗?
  18. Windows日志查看工具分享
  19. 最后介绍几个对程序员非常重要的24个软技能
  20. 计算机网络知识点总结(计网期末盲押系列)

热门文章

  1. 循环神经网络--RNN--Sequence(时间序列)
  2. python0加到100_Python之0加到100
  3. Android4.2Email源码流程解析
  4. 串行通信 软件仿真STM32与74LS164通信
  5. 根据输入的年份、产品类型和随机数产生固定资产编号 即:固定资产编号=年份+0+产品类型+3位随机数 程序运行流程:请输入年份: …… 请
  6. 计算机网络实验(一)Packet Tracer介绍
  7. 关于开发中耦合度的强弱顺序
  8. TinyXml使用详解
  9. python+selenium之等待时间(三种)
  10. CleanMyMac X系统mac提速加速的办法