我正在为进度对话框(pbarDialog
)设置一个可绘制对象,但我的问题是我每次都想调整可绘制对象的大小,但不知道如何调整。
下面是一些代码:
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();
字符串
8条答案
按热度按时间vybvopom1#
以下为我工作:
字符串
2sbarzqh2#
这是我最终的结果,部分归功于萨阿德的回答:
字符串
8cdiaqws3#
对于我来说,这是一个很好的短代码(上面的代码对我来说不起作用),找到了here:
字符串
a11xaf1n4#
以下是上述答案的组合,作为Kotlin扩展
字符串
使用方法:
型
或
型
afdcj2ne5#
也许我的解决方案没有完全解决这个问题,但是我需要一个类似于“CustomDrawable”的东西。
换句话说,我想在一个圆形前面设置一个标志。所以我创建了一个带有背景的FrameLayout(只是一个彩色的圆形),在这个圆形前面显示标志。
要调整徽标的大小,我通过缩放缩小徽标-这里是一些代码:
字符串
下面是FrameLayout,它显示ListView行中的图标:
型
将此解决方案视为一种选择/想法。
nszi6y056#
如果源Drawable不是BitmapDrawable的instanceofBitmapDrawable,那么投票最多的答案将不起作用,这可能是使用矢量,颜色drawable等的情况。
最合适的解决方案可能是将Drawable绘制到具有设置位图的Canvas中,如下所示:
字符串
奖金:计算要应用的比例(例如,当缩放Drawable到视图时):
型
注意:始终在工作线程中执行此操作!
uinbv5nw7#
Kotlin方式
最后对我有用的是这个简单的解决方案
字符串
hgncfbus8#
对于任何仍然在这个问题上挣扎的人,请记住,这里最受欢迎的答案并不是正确的方法。如果你拥有的Drawable不是从BitmapDrawable扩展的,那么将任何Drawable转换为BitmapDrawable是行不通的,你会得到一个ClassCastException。
这是我最终使用的代码,它适用于每一种Drawable:
Kotlin酒店
字符串
** java **
型