Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 形状是否可绘制为视图之间的共享对象_Android - Fatal编程技术网

Android 形状是否可绘制为视图之间的共享对象

Android 形状是否可绘制为视图之间的共享对象,android,Android,我使用可从xml绘制的形状作为布局xml中2个图像视图的src 在第二个imageview中,我通过代码将可绘制的颜色从绿色更新为红色 我注意到第一个图像视图的drawable变为红色 我认为每个imageview都有自己的drawable版本。这是一个共享对象吗?在这种情况下,我必须创建两个不同的可绘制XML吗?这并不明显,但确实如此,可绘制XML的状态在不同的实例和不同的ImageView之间共享。不久前,我个人也遇到过同样的不愉快行为 可以在这里找到证据: 注意:无论您为项目实例化了多少

我使用可从xml绘制的形状作为布局xml中2个图像视图的src

在第二个imageview中,我通过代码将可绘制的颜色从绿色更新为红色 我注意到第一个图像视图的drawable变为红色


我认为每个imageview都有自己的drawable版本。这是一个共享对象吗?在这种情况下,我必须创建两个不同的可绘制XML吗?

这并不明显,但确实如此,可绘制XML的状态在不同的实例和不同的ImageView之间共享。不久前,我个人也遇到过同样的不愉快行为

可以在这里找到证据:

注意:无论您为项目实例化了多少不同的对象,项目中的每个唯一资源都只能维护一种状态。例如,如果从同一图像资源实例化两个可绘制对象,并更改一个对象的属性(如alpha),则它也会影响另一个对象。在处理图像资源的多个实例时,不应直接变换可绘制对象,而应执行tween动画

但幸运的是,Android SDK中内置了一个解决方案。 如果您已经在更改可绘制代码的状态,那么解决方案将派上用场。要更改一个且只有一个可绘制的状态,可以使用方法


资料来源:

Awesome。。非常感谢。