我想知道是否有办法从相对布局动画背景,以便颜色从例如蓝色变为黄色,从左到右在大约1秒内变化。 (此动画应在触发时触发)。 感谢任何帮助, TY
答案 0 :(得分:1)
我认为您可以使用AnimationDrawable,这是最基本的三种颜色方式:蓝色,渐变蓝黄色和黄色:
在 res / drawable 中创建一个gradient.xml文件(从左到右):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="0"
android:endColor="#FFFF00"
android:startColor="#0000FF" />
</shape>
然后在同一文件夹中创建一个animalion-list.xml文件:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#0000FF" android:duration="333"/>
<item android:drawable="@drawable/gradient" android:duration="333"/>
<item android:drawable="#FFFF00" android:duration="333"/>
</animation-list>
将动画列表作为背景应用于相对布局:
<RelativeLayout:
android:...
android:...
android:drawable="@drawable/animation-list"
android:... >
...
</RelativeLayout>
在您的代码中:
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relative_layout_id);
AnimationDrawable animationDrawable = (AnimationDrawable) relativeLayout.getBackground();
mybutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
animationDrawable.start();
}
});
我并不认为这段代码会给你你的确切期望,但想象一下,你应该得到你想要的。
希望这有帮助。
答案 1 :(得分:0)
Drawable gradient_2
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="@color/deep_purple_500"
android:endColor="@color/blue_700"
android:angle="0"/>
</shape>
以及xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_2"
android:orientation="vertical">
</LinearLayout>
你可以改变颜色为0,45,90,180的agle
android:angle="0"
您还可以添加centerColor
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="0"
android:centerColor="#D8EDFD"
android:endColor="#D8EDFD "
android:startColor="#F6F9FF " />
</shape>