优彩彩票_优彩彩票技巧_优彩彩票计划|首页

登录立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

显示超大尺寸的图片

[复制链接]
来自:MrlLee分类:Android精品源码上传时间:2016-7-4 18:32:07
立即下载
收藏

优彩彩票介绍:

demo



这是一张21250 x 7500 (1亿6千万像素)像素(121 MB), 加载需要30s 左右





这里可以下载这些大图http://pan.baidu.com/s/1mhw6Qko



Usage



dependencies{
compile 'cn.kejin.ximageview:XImageView:1.2.2'
}


<cn.kejin.ximageview.XImageView
android:id="@+id/xImageView"
android:layout_height="match_parent"
android:layout_width="match_parent"
app:initType="fitViewMinImageMin"
app:doubleType="fitImageMinViewMax"/>


try{
mXImageView.setImage(getAssets().open("b.jpg"));
}
catch(IOException e) {
e.printStackTrace();
}


Details



属性说明
[Java]查看源文件复制代码
initType
[Java]查看源文件复制代码
fitViewMin
默认为此类型总是缩放适应View的最短的边长
[Java]查看源文件复制代码
fitViewMinImageMin
当图片的尺寸小于 view 的尺寸时, 不进行放大, 否则缩小至适应view的最短的边长
[Java]查看源文件复制代码
fitViewMax
TODO: 尚未实现总是缩放适应View的最长的边长
[Java]查看源文件复制代码
fitImage
TODO: 尚未实现图片有多大显示多大
[Java]查看源文件复制代码
doubleType
[Java]查看源文件复制代码
fitViewMinViewMax
默认为此种类型 缩小至 ViewMin, 放大至 ViewMax
[Java]查看源文件复制代码
fitImageMinViewMax
缩小至 Min(viewMin, imageMin), 放大至 viewMax
[Java]查看源文件复制代码
fitViewMinImageMax
TODO: 尚未实现 缩小至 viewMin, 放大至 Max(imageMax, Min(3 x imageMax, viewMax))
[Java]查看源文件复制代码
fitImageMinImageMax
TODO: 尚未实现 缩小至 Min(viewMin, imageMin), 放大至 Max(imageMax, Min(3 x imageMax, viewMax))


/**
* 初始化状态类型
*/
enumInitType{

/**
* 总是缩放到适应 view 的最小一边
* 默认为这种类型
*/
FIT_VIEW_MIN(1),

/**
* 总是缩放到适应 view 的最大一边
*/
FIT_VIEW_MAX(2),

/**
* 图片有多大就显示多大
*/
FIT_IMAGE(4),

/**
* 当图片小于 view 的最小边的时候, 不进行缩放, 按照 image 的尺寸显示,
* 如果大于view 的最小边就缩放至适应 view 的最小边
*/
FIT_VIEW_MIN_IMAGE_MIN(8)
}

/**
* 双击缩放类型
* 此处和 attrs.xml: doubleType 的value 保持一致
*/
enumDoubleType{
/**
* (默认为这种)
* 缩小至 viewMin
* 放大至 viewMax
*/
FIT_VIEW_MIN_VIEW_MAX(1),

/**
* 缩小至 Min(viewMin, imageMin)
* 放大至 viewMax
*/
FIT_IMAGE_MIN_VIEW_MAX(2),

/**
* 缩小至 viewMin
* 放大至 Max(imageMax, Min(3 x imageMax, viewMax))
*/
FIT_VIEW_MIN_IMAGE_MAX(3),

/**
* 缩小至 Min(viewMin, imageMin)
* 放大至 Max(imageMax, Min(3 x imageMax, viewMax))
*/
FIT_IMAGE_MIN_IMAGE_MAX(4);
}


XImageView 支持使用

[Java]查看源文件复制代码
FilePath, File, InputStream, Bitmap
来设置图片,
[Java]查看源文件复制代码
FilePath, File
会转换为
[Java]查看源文件复制代码
InputStream
,
在使用 Bitmap 设置图片时,要注意内存的消耗(因为内部会使用一个副本),
可以使用
[Java]查看源文件复制代码
setImage(bitmap, cache)
, 这个方法会把 Bitmap 转换为InputStream,再设置图片,不过这样会比较耗时!



voidsetImage(Bitmapbitmap)
voidsetImage(Bitmapbitmap,booleancache);

// 默认的 Config 为 Bitmap.Config.RGB_565
voidsetImage(Stringpath);
voidsetImage(Stringpath,Bitmap.Configconfig);

voidsetImage(Filefile);
voidsetImage(Filefile,Bitmap.Configconfig);

voidsetImage(InputStreaminputStream);
voidsetImage(InputStreamis,Bitmap.Configconfig);

接口说明
[Java]查看源文件复制代码
void setInitType(InitType type)
设置初始缩放类型
[Java]查看源文件复制代码
void setDoubleTapScaleType(DoubleType type)
设置双击缩放的缩放方式
[Java]查看源文件复制代码
void scaleImage(float dest, boolean smooth, int smoothTime);
以View的中心点为中心缩放, 缩放的目标倍数是以当前的显示的尺寸来计算的(比如 dest=1.1, 则会在当前的显示的基础上放大0.1倍)
[Java]查看源文件复制代码
void scaleImage(int cx, int cy, float dest, boolean smooth, int smoothTime)
以一点为中心缩放图片, (cx,cy) 中心点, dest 缩放的目标倍数,以当前的倍数来计算,smooth 是否使用动画, smoothTime 动画时间
[Java]查看源文件复制代码
void scaleToMaxFitView(int cx, int cy, boolean smooth, int smoothTime)
缩放到最大适应View(就是图片宽高 >= View的宽高)
[Java]查看源文件复制代码
void scaleToMinFitView(int cx, int cy, boolean smooth, int smoothTime)
缩放到最小适应View (就是图片宽高 <= View的宽高)
[Java]查看源文件复制代码
int scrollImage(int dx, int dy)
滑动图片, 返回当前已经到达的边界
[Java]查看源文件复制代码
BitmapManager.NONE
[Java]查看源文件复制代码
LEFT
[Java]查看源文件复制代码
RIGHT
[Java]查看源文件复制代码
TOP
[Java]查看源文件复制代码
BOTTOM
, (dx, dy) 相对滑动的像素, 当滑动这个图片,如果已经到达了左边的边界, 已经不能再继续向右滑动,则
[Java]查看源文件复制代码
scrollImage()
[Java]查看源文件复制代码
LEFT
, 如果这个图片左边和上边都已经不能继续滑动,则会返回
[Java]查看源文件复制代码
LEFT | RIGHT
[Java]查看源文件复制代码
float getScaleFactor()
获取当前图片的缩放的倍数,相对图片的原始图片的尺寸来说的
[Java]查看源文件复制代码
Rect getRealImageRect()
获取真实图片的尺寸,注意最好在 onSetImageFinished() 之后获取这个值
[Java]查看源文件复制代码
Rect getShowImageRect()
获取当前图片显示出来的的尺寸
[Java]查看源文件复制代码
boolean isSettingImage()
判断是否正在设置图片


监听单击, 双击, 长按, 和 设置完成 事件, 如果需要监听

[Java]查看源文件复制代码
onSetImageFinished()
, 需要在
[Java]查看源文件复制代码
setImage()
之前设置这个监听



// 监听单击, 双击, 长按, 和 设置完成 事件
mXImageView.setActionListener(newXImageView.OnActionListener()
{
@Override
publicvoidonSingleTapped(XImageViewview,MotionEventevent,booleanonImage)
{
}

@Override
publicbooleanonDoubleTapped(XImageViewview,MotionEventevent)
{
returnfalse;// 返回 true 表示已经处理了双击事件, 不会进行缩放操作
}

@Override
publicvoidonLongPressed(XImageViewview,MotionEventevent)
{
}

@Override
publicvoidonSetImageFinished(XImageViewview,booleansuccess,Rectimage)
{
}
});

// 如果不想监听这么多, 可以使用 XImageView.SimpleActionListener

相关源码推荐:

回复

举报

我来说两句
所有评论(62)
humanboy2016-7-4 22:55:01
mark,收藏了
回复
葫芦_eRDJw2016-7-4 23:54:40
写的真的很不错
回复
tintins2016-7-5 00:53:45
膜拜大神~
回复
fancy2016-7-5 01:41:48
相当不错,感谢无私分享精神!
回复
深思2016-7-5 02:16:44
不错不错,楼主辛苦了。。。
回复
tylz2016-7-5 03:25:33
不错不错,楼主辛苦了。。。
回复
孙林2016-7-5 09:17:06
感谢分享,安卓巴士有你更精彩:)
回复
上传代码
查看数:2111收藏数:15下载数:点赞数:1
代码贡献英雄榜
用户名下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

广告投放|广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士(粤ICP备000001号)

快速回复返回顶部返回列表