android drawable旋转 如何从资源创建Drawable



android shape ring (4)

我有一个图像res/drawable/test.png (R.drawable.test)。
我想将这个图像传递给一个接受Drawable的函数。
(例如mButton.setCompoundDrawables())

那么如何将图像资源转换为Drawable

https://src-bin.com


Answer #1

getDrawable (int id)方法在API 22中折旧。

相反,您应该使用API​​ 21+的getDrawable (int id, Resources.Theme theme)

代码看起来像这样。

Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
    myDrawable = context.getResources().getDrawable(id);
}

Answer #2

你的活动应该有方法getResources。 做:

Drawable myIcon = getResources().getDrawable( R.drawable.icon );

Answer #3

我只想补充一点,如果您在使用getDrawable(...)时收到“弃用”消息,则应该使用支持库中的以下方法。

ContextCompat.getDrawable(getContext(),R.drawable.[name])

使用此方法时,不必使用getResources()。

这相当于做类似的事情

Drawable mDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    mDrawable = ContextCompat.getDrawable(getContext(),R.drawable.[name]);
} else {
    mDrawable = getResources().getDrawable(R.id.[name]);
}

这适用于棒棒糖之前和之后的版本。


Answer #4

此代码已弃用。

Drawable drawable = getResources().getDrawable( R.drawable.icon );

使用这个instad。

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);




drawable