我有一个圆形的自定义形状,我希望它能改变它的颜色,但我得到的形状就像我想要的方形而不是圆形
这是我的形状:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#666666"/>
<size
android:width="120dp"
android:height="120dp"/>
在我的布局中:
<ImageView
android:id="@+id/rgb_led"
android:visibility="gone"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/round_led"
android:layout_centerHorizontal="true" />
代码:
ledImageView.setVisibility(View.VISIBLE);
int colorFrom = getResources().getColor(colorFromId);
int colorTo = getResources().getColor(colorToId);
colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
colorAnimation.setDuration(duration);
colorAnimation.setRepeatCount(ValueAnimator.INFINITE);
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
ledImageView.setBackgroundColor((int) animator.getAnimatedValue());
}
});
colorAnimation.start();
但我得到一个闪烁的方形而不是圆形!?
编辑:
我实际上想要为圆形图像制作动画,以获得闪烁的彩色光效果,可以改变颜色和闪烁持续时间。
欢呼声。
答案 0 :(得分:0)
试试这段代码,我在我的应用程序中使用它来显示一个圆形动画循环:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5"
android:toDegrees="360" >
<!-- Duration = 1 means that the rotation will be done in 1 second
increase duration if you want to speed up the rotation-->
<shape
android:innerRadiusRatio="30"
android:shape="ring"
android:thicknessRatio="80"
android:useLevel="false">
<size
android:height="80dp"
android:width="80dp" />
<gradient
android:centerColor="@android:color/transparent"
android:centerY="0.50"
android:endColor="#E6E6E6"
android:startColor="#BEBEBE"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
修改1:
您可以使用ProgressBar,更容易实现和通过代码控制:
在xml文件中:
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="bottom|center_horizontal"
android:visibility="gone"
android:indeterminate="true" >
</ProgressBar>
你的* .java文件中的
ProgressBar progress = (ProgressBar) findViewById(R.id.progressBar);
// Control the size
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(80,80);
// Control position
params.gravity = Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL;
// Set new parameters and visibility
progress.setLayoutParams(params);
progress.setVisibility(View.VISIBLE);
// Set Color
progress.getIndeterminateDrawable().setColorFilter(0xFFFF0000,android.graphics.PorterDuff.Mode.MULTIPLY);