android – 调整图像大小和setCompoundDrawablesWithIntrinsicBounds

android – 调整图像大小和setCompoundDrawablesWithIntrinsicBounds,第1张

概述我的应用程序包含带有图像的按钮,使用setCompoundDrawablesWithIntrinsicBounds设置.我使用app的drawables文件夹中的图像,但也使用从网上下载并存储在SD卡上的图像.我发现我需要升级SD卡图像,这样它们的渲染大小与drawables中的图像大小相同.我这样做使用: Options opts = new BitmapFactory.Options(); 我的应用程序包含带有图像的按钮,使用setCompoundDrawablesWithIntrinsicBounds设置.我使用app的drawables文件夹中的图像,但也使用从网上下载并存储在SD卡上的图像.我发现我需要升级SD卡图像,这样它们的渲染大小与drawables中的图像大小相同.我这样做使用:

Options opts = new BitmapFactory.Options();    opts.inDensity = 160;    Bitmap bm = BitmapFactory.decodefile(Environment.getExternalStorageDirectory() +      context.getResources().getString(R.string.savefolder) + iconfile,opts);    myIcon = new BitmapDrawable(context.getResources(),bm);    btn.setCompoundDrawablesWithIntrinsicBounds(myIcon,null,null );

这一直没有问题,直到我将手机更新到AndroID 4.1.1并注意到下载的图像现在出现的尺寸比可绘制文件夹的图像小得多.

我使用inDensity值搞砸了很少的效果,但是根据btnheight值(只是图像所在按钮的高度)缩放位图更成功:

int intoffset=bm.getHeight() - bm.getWIDth();                       myIcon = new  BitmapDrawable(context.getResources(),Bitmap.createScaledBitmap(bm,btnheight - (((btnheight/100)*10) +      intoffset),btnheight - ((btnheight/100)*10),true));

这种作品,但图像仍然比它所在的按钮大一点(根据上述情况,情况应该不是这样,因为它应该将图像高度缩放到按钮高度的90%.)I做了这个测试.我不能在我的应用程序中使用此方法,因为按钮高度根据按钮上显示的字体大小而变化,并且用户可以在应用程序首选项中更改此字体大小.

顺便说一下,奇怪的是(?),通过将位图缩放到原始高度的两倍来使用

Bitmap.createScaledBitmap(bm,bm.getWIDth() * 2,bm.getHeight() * 2,true));

它在4.0.3和4.1.1中正确呈现(好吧,它显示的尺寸与可绘制的图标大小相同),但在2.1中表现得如你所期望的那样(渲染得比它所在的按钮大).

如果有人对4.1.1中为什么会发生这种情况有任何见解,我可以这样做,我的decodefile位图呈现与我的可绘制位图相同的大小,而不必单独编写4.1.1代码,我将不胜感激!

@R_404_6120@ 修改我的原始代码如下所示适用于4.1.1以及之前我测试过的版本…

Options opts = new BitmapFactory.Options();   displayMetrics dm = new displayMetrics();   context.getwindowManager().getDefaultdisplay().getMetrics(dm);    int dpiClassification = dm.densityDpi;    opts.inDensity = dm.DENSITY_MEDIUM;    opts.inTargetDensity = dpiClassification;    opts.inScaled =true;    Bitmap bm = BitmapFactory.decodefile(Environment.getExternalStorageDirectory() +     context.getResources().getString(R.string.savefolder) + iconfile,null );
总结

以上是内存溢出为你收集整理的android – 调整图像大小和setCompoundDrawablesWithIntrinsicBounds全部内容,希望文章能够帮你解决android – 调整图像大小和setCompoundDrawablesWithIntrinsicBounds所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1129850.html

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

发表评论

登录后才能评论

评论列表(0条)

保存