0

ボタンクリックでテキストビューを点滅させるコードです。

start.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) 
{

    recordShow.setVisibility(View.VISIBLE);
    Animation anim = new AlphaAnimation(0.0f, 1.0f);
    anim.setDuration(1000); //You can manage the time of the blink with this parameter
    anim.setStartOffset(20);
    anim.setRepeatMode(Animation.REVERSE);
    anim.setRepeatCount(Animation.INFINITE);
    recordShow.startAnimation(anim);
}

別のボタンのクリックで点滅を停止する必要があります...どうすればよいですか..??

4

2 に答える 2

3

別のアプローチは次のとおりです。

1. Activity でAnimationオブジェクトとTextViewオブジェクトをグローバルに (メソッドの外側で)宣言します。

private Animation mAnim;
private TextView mRecordShow;

2.アニメーション プロパティを設定して開始するクラスをセットアップします。このクラスがそのパラメータとしてTextViewウィジェットを想定するようにします。

protected void setBlinkingText(TextView textView) {
    mAnim = new AlphaAnimation(0.0f, 1.0f);
    mAnim.setDuration(1000); // Time of the blink
    mAnim.setStartOffset(20);
    mAnim.setRepeatMode(Animation.REVERSE);
    mAnim.setRepeatCount(Animation.INFINITE);
    textView.startAnimation(mAnim);
}

3.特定のテキスト ビューでアニメーションを停止する別のクラスをセットアップします。このクラスは、パラメーターとしてTextViewウィジェットも期待できるようにします。

protected void removeBlinkingText(TextView textView) {
        textView.clearAnimation();
}

4.これで、必要な場所でクラスを使用して、適切なテキスト ビューを渡すことができます。

例えば

(a)アニメーションを開始するonClick()メソッドで、すべてのアニメーション コードを次のように置き換えます。

setBlinkingText(mRecordShow);

(b)そのテキスト ビューでアニメーションを停止したい場合は、次のように呼び出します。

removeBlinkingText(mRecordShow);
于 2015-01-07T11:30:31.980 に答える
0

以下は、同じボタンをクリックしてまばたきを止めたいと仮定しています。別のボタンを使用してクリックを停止する場合は、以下の if-elseonClick()を個別のクリック ハンドラーに分割できます。

まず、anim外側に移動onClick()して、それを含むクラスのフィールドにします。anim後でキャンセルできるように、どこかに保管する必要があります。

Animation anim = new AlphaAnimation(0.0f, 1.0f)
anim.setDuration(1000); //You can manage the time of the blink with this parameter
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);

TextView次に、含まれているクラスにブール値フィールドを作成して、が現在点滅しているかどうかを追跡します。

boolean mBlinking = false;

それで:

@Override
public void onClick(View v) 
{
    recordShow.setVisibility(View.VISIBLE);
    if(!mBlinking){
        recordShow.startAnimation(anim);
        mBlinking = true;
    } else{
        recordShow.clearAnimation(anim); // cancel blink animation
        recordShow.setAlpha(1.0f); // restore original alpha
        mBlinking = false;
    }
}
于 2013-10-19T02:38:35.690 に答える