android中如何动态修改ImageView中图片的大小 比如说点击该图片后图片能变大

android中如何动态修改ImageView中图片的大小 比如说点击该图片后图片能变大,第1张

使用位图(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、创建imageview对象

2、设置imageview的图片

3、添加到布局中

示例代码

ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup)//获取原来的布局容器

ImageView imageView = new ImageView(this) //创建imageview

imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)) //image的布局方式

imageView.setImageResource(R.drawable.ic_launcher) //设置imageview呈现的图片

group.addView(imageView) //添加到布局容器中,显示图片。

本文分析对比了各种更改UIView背景的方法。当然,背景是根据一个图片来的(非纯色)。

1.图片会自动拉伸到屏幕view的大小(加一个uiimageview在uiview上面)

[objc] view plaincopy

UIImageView* imageView = [[UIImageView alloc] initWithFrame:view.bounds]

imageView.image = [[UIImage imageNamed:@"name.png"] stretchableImageWithLeftCapWidth:left topCapHeight:top]

[view addSubview:imageView]

这种方式,如果原始图片大小不够(小于view的大小),可以拉伸,在view释放后也没有什么内存保留。

2.通过图片来生成UIColor设置view的backgroundColor(图片不会拉伸到屏幕view的大小)

1.imageNamed方式

[objc] view plaincopy

view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"name.png"]]

2.contentOfFile方式

[objc] view plaincopy

NSString* path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"png"]

view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:path]

这两种方式都会在生成color时占用大量的内存(原始图片的n倍,这个n可能会达到几千的程度)。而且如果图片大小不够,就会按照原始大小一个一个u画过去,也就是不会自动拉伸。1和2的区别在于,view释放后,1中的color并不会跟着释放,而是一直存在于内存中(当然,再次根据这个图片生成color时并不会再次申请内存了),而2中的color就会随着view的释放而释放。

3..quartzCore方式(图片会自动拉伸到屏幕view的大小)

[objc] view plaincopy

UIImage *image = [UIImage imageNamed:@"name.png"]

view.layer.contents = (id) image.CGImage    // 如果需要背景透明加上下面这句

view.layer.backgroundColor = [UIColor clearColor].CGColor

这种方式会自动拉伸图片,而且没有额外内存占用。

综上,推荐第三种方式来根据图片设置背景色。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11255177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存