android 设置drawable大小,在Android中调整Drawable大小

这篇博客探讨了如何在Android中动态调整进度对话框的Drawable大小,并实现自定义的图像缩放。作者通过创建一个`scaleImage`方法来缩放BitmapDrawable,并将其应用于对话框的图标。同时,提出了使用带有背景的FrameLayout来展示徽标,并通过调整ScaleX属性改变徽标大小。文章还分享了一种将图标置于圆形背景前的方法,以达到特定的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我设置了一个进度对话框( pbarDialog )的drawable,但我的问题是我想每次调整drawable的大小,但不知道如何。

这里是一些代码:Handler progressHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { // some more code case UPDATE_PBAR: pbarDialog.setIcon(mAppIcon); pbarDialog.setMessage(mPbarMsg); pbarDialog.incrementProgressBy(mIncrement+1); break; } } }; pbarDialog.show(); Thread myThread = new Thread(new Runnable() { public void run() { // some code for (int i = 0; i < mApps.size(); i++) { mAppIcon = mAdapter.getIcons().get(mApps.get(i).getPackageName()); // need to resize drawable here progressHandler.sendEmptyMessage(UPDATE_PBAR); } handler.sendEmptyMessage(DISMISS_PBAR); } }); myThread.start();

以下为我工作:

private Drawable resize(Drawable image) { Bitmap b = ((BitmapDrawable)image).getBitmap(); Bitmap bitmapResized = Bitmap.createScaledBitmap(b, 50, 50, false); return new BitmapDrawable(getResources(), bitmapResized); }

这就是我最后的结局,部分归功于Saad的回答:

public Drawable scaleImage (Drawable image, float scaleFactor) { if ((image == null) || !(image instanceof BitmapDrawable)) { return image; } Bitmap b = ((BitmapDrawable)image).getBitmap(); int sizeX = Math.round(image.getIntrinsicWidth() * scaleFactor); int sizeY = Math.round(image.getIntrinsicHeight() * scaleFactor); Bitmap bitmapResized = Bitmap.createScaledBitmap(b, sizeX, sizeY, false); image = new BitmapDrawable(getResources(), bitmapResized); return image; }

对于resize,这是好的和短(上面的代码不适合我),在这里find:

ImageView iv = (ImageView) findViewById(R.id.imageView); Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.picture); Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, newWidth, newHeight, true); iv.setImageBitmap(bMapScaled);

也许我的解决scheme不是完全覆盖问题,但我需要像“CustomDrawable”的东西。

换句话说,我想在圆形前面设置一个标志。 所以我创build了一个带有背景的FrameLayout(只是一个彩色圆圈),在这个圆形前面我展示了这个标志。

要调整徽标的大小,我通过缩放缩小徽标 – 这是一些代码:

iv = new ImageView(mContext); iv.setScaleX(0.75f); //

这是显示ListView行内图标的FrameLayout:

看到这个解决scheme作为一个选项/想法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值