【问题标题】:Make a custom drawable blink制作自定义可绘制闪烁
【发布时间】:2015-11-20 05:32:21
【问题描述】:

我有一个自定义的drawable,我想让它闪烁。目前我可以看到drawable显示在文本旁边,但没有闪烁效果

public class CustomDrawable extends Drawable {
private Context mContext;
private int mColor;

public CustomDrawable(Context context, int color) {
    mContext = context;
    mColor = color;
}

@Override
public void draw(Canvas canvas) {
    int x = 30;
    int y = 30;
    int radius = 15;
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(mContext.getResources().getColor(R.color.transparent));
    paint.setAntiAlias(true);
    canvas.drawPaint(paint);
    paint.setColor(mColor);
    canvas.drawCircle(x / 2, y / 2, radius, paint);
}

@Override
public void setAlpha(int alpha) {

}

@Override
public void setColorFilter(ColorFilter cf) {

}

@Override
public int getOpacity() {
    return 0;
}

}

如何使自定义可绘制对象闪烁我尝试更改 alpha 但没有效果。

 mTextView = (TextView) findViewById(R.id.textView);
    AnimationDrawable drwable = new AnimationDrawable();
    drwable.addFrame(new CustomDrawable(this, Color.RED), 50);
    drwable.setAlpha(255);
    drwable.setEnterFadeDuration(500);
    mTextView.setCompoundDrawables(null, drwable, null, null);
    drwable.start()

【问题讨论】:

标签: android android-custom-view android-drawable


【解决方案1】:

为你的drawable使用xml动画。

在 res 文件夹中创建一个文件夹 anim。然后创建 blink.xml 文件。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="600"
        android:repeatMode="reverse"
        android:repeatCount="infinite"/>
</set>

然后按如下方式使用:

Animation blink;
.
.
// load your animation
animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.blink);
.
.
// set animation listener
blink.setAnimationListener(this);


mydrawable.startAnimation(blink);

【讨论】:

  • Drawable 上没有startAnimation() 方法。
猜你喜欢
  • 2011-03-10
  • 2011-09-22
  • 2022-01-20
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多