重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ImageView可以放大缩小,也可以通过Scaletype这个属性来指定。
创新互联建站专注于沧州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供沧州营销型网站建设,沧州网站制作、沧州网页设计、沧州网站官网定制、小程序定制开发服务,打造沧州网络公司原创品牌,更为您提供沧州网站排名全网营销落地服务。
Scaletype的设置的方式包括:
1. 在layout xml中定义android:scaleType="CENTER"
2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);
Scaletype的取值和区别:
1. SetScaleType(ImageView.ScaleType.CENTER);
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
2. SetScaleType(ImageView.ScaleType.CENTER_CROP);
按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
4. setScaleType(ImageView.ScaleType.FIT_CENTER);
把图片按比例扩大/缩小到View的宽度,居中显示
5. FIT_START, FIT_END在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。
在此就不给出示例了。
6. FIT_XY
不按比例缩放图片,目标是把图片塞满整个View。
其实如果图片像素比较高的话是不会影响他的清晰度的,一般都是用的bitmap位图,矩阵像素。所以你要求图片放大后还是很清晰,那么只能要求原图片的像素比较高,而并不能通过其他的操作来实现清晰度的变化!
ANDROID有一个放大镜的图标,你点击加就放大,点击减就缩小,或者用两只手滑大滑小。
使用位图(Bitmap)再重新绘制遍
//原位图
Bitmap btm1 = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.hh);
BitmapDrawable bd1=BitmapDrawable(btm1);
imageView.setBackgroundDrawable(bd1);
放大后 滑动时计算 图片的边是否在屏幕外,如果在屏幕外就可移动,比如 向上滑动,是想看图片下面的部分,此时计算图片的底边是否在屏幕外,如果是,就可以向上移动图片。
Scaletype的设置的方式包括:
1、在layout xml中定义android:scaleType="CENTER"
2、或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);
扩展资料:
根据位深度,可将位图分为1、4、8、16、24及32位图像等。每个像素使用的信息位数越多,可用的颜色就越多,颜色表现就越逼真,相应的数据量越大。
例如,位深度为 1 的像素位图只有两个可能的值(黑色和白色),所以又称为二值位图。位深度为 8 的图像有 2^8(即 256)个可能的值。位深度为 8 的灰度模式图像有 256 个可能的灰色值。
RGB图像由三个颜色通道组成。8 位/通道的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。
有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。通常将使用24位RGB组合数据位表示的的位图称为真彩色位图。
参考资料来源:百度百科-Bitmap
先上效果图
1.为了实现图片的放到缩小,我选择了 PhotoView 框架用于显示图片。
2.使用 Glide 框架加载图片
3.实现原理:
通过自定义View继承FrameLayout,以PhotoView作为背景,动态添加ImageView作为点。
4.主要分析:
1)标签随图片移动:通过实现PhotoView的OnMatrixChangedListener接口,监听图片的位置及大小,动态设置标签的位置
2)点击图片任意位置,在此位置生成标签,
3)标签添加后,会导致布局重新测量,此时会导致已经放大的图片回到初始的位置及大小,在onLayout方法中重新设置photoView的Matrix。
矩形框的实现原理类似,难点就是在给icon添加了移动监听,保证icon可随处移动
下面是源码地址
带,但同时你也要自己写事件监听,有方法可以实现。可以直接调用.流程是得到一个view,然后view.setImageMatrix(Matrix m).然后创建一个matrix,matrix.postScale(s1,s2,x,y);s1,s2是横向缩放比例,s2是纵向缩放比例,x,y是中心点的坐标。缩放比例大于1,就是放大,小于1是缩小 .
用matrix类进行缩放 然后canvas画出来好了