ET.*_*ET. 5 android android-drawable
当我尝试使用时,我有一个非常奇怪的现象StateListDrawable:
我有一个扩展的视图,ImageView我StateListDrawable在其构造函数中使用.我有2个代码片段,以提出我的问题.第一个:
public class MyView extends ImageView{
Resources r = getResources();
Drawable filteredDrawable = r.getDrawable(R.drawable.smallsale);
filteredDrawable.setColorFilter(new LightingColorFilter(Color.RED, 1));
setImageDrawable(filteredDrawable);
}
Run Code Online (Sandbox Code Playgroud)
第二个:
public class MyView extends ImageView{
Resources r = getResources();
Drawable filteredDrawable = r.getDrawable(R.drawable.smallsale);
filteredDrawable.setColorFilter(new LightingColorFilter(Color.RED, 1));
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, filteredDrawable);
states.addState(new int[] {android.R.attr.state_focused}, filteredDrawable);
states.addState(new int[] {}, r.getDrawable(R.drawable.smallsale));
//Notice I do not use 'states' at all...
setImageDrawable(filteredDrawable);
Run Code Online (Sandbox Code Playgroud)
}
(我知道这段代码没有多大意义 - 我想简化问题以使问题更清晰).问题是,在第一次正确的时候一切正常 - 我在drawable上设置了一个彩色滤镜,并显示出来.但是在第二个片段中,StateListDrawable实例以某种方式影响过滤器,并显示原始 drawable,即使我从未将其连接到ImageView调用setImageDrawable(states).
有人可以向我解释发生了什么事吗?我的目标是使用StateListDrawable相同的drawable用于不同的状态,如下所示:
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, filteredDrawable);
states.addState(new int[] {android.R.attr.state_focused}, filteredDrawable);
states.addState(new int[] {}, r.getDrawable(R.drawable.smallsale));
setImageDrawable(states);
Run Code Online (Sandbox Code Playgroud)
(我需要通过代码来实现,因为我的drawable应该从网络动态加载,而不是作为资源加载)
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |