我创建了一个带有两个位图的自定义视图.当我在VIEw之外使用Bitmap时,在ImageVIEw中,图像正常.我必须调用setDensity(240)(hdpi设备),但是没关系.
但是,在自定义视图中,当我在画布上绘制相同的位图时,在onDraw(Canvas)重写方法中,它将再次缩放,就像不调用setDensity(240)时一样.
通过调试,在调用之后,我确保了画布和位图的密度为240.
码:
@OverrIDeprotected voID onDraw(Canvas canvas) { _ingredIEnt.setDensity(240); canvas.setDensity(240); canvas.drawBitmap(_ingredIEnt, new Matrix(), new Paint()); Matrix refMatrix = new Matrix(); refMatrix.postTranslate(0, _ingredIEnt.getHeight()-35); Paint paint = new Paint(); paint.setAlpha(60);}
正在工作的ImageVIEw,位于我的视图之外.
Bitmap tertr = _cocktail.getCocktailBitmAPImage();tertr.setDensity(240);ImageVIEw in = new ImageVIEw(this);in.setScaleType(ScaleType.CENTER);in.setimageBitmap(tertr);relativeLayout relativeLayout = relativeLayout)findVIEwByID(R.ID.cocktail_date_image_layout);LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);relativeLayout.addVIEw(in, params);
第一个显示的是按比例放大的图像,就像第二个显示的一样,没有setDensity调用.图像以72dpi的分辨率创建.这些图像已给出,我无法更改.我是否缺少一件事,或者这是Canvas的工作方式?用于测试的设备是DROID2.
解决方法:
我解决了问题.导致问题的代码段在清单文件中.
我们更改了< supports-screens androID:anyDensity =“ false” />真实.默认值是True,但是不幸的是,在尝试其他方法时,我更改了它.使用新值和setDensity()方法,它可以正常工作.
以上是内存溢出为你收集整理的缩放画布上的位图全部内容,希望文章能够帮你解决缩放画布上的位图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)