문장을 유창하게 반짝이다
7506 단어 Android
그림 완성
VISIBLE/INVISIBLE가 아니라 페이드 아웃으로 부드럽게 깜박입니다.
(GIF 애니메이션의 반복으로 인해 깜빡이는 시기는 다소 혼란스럽지만 실제로는 등간격으로 깜빡인다)
이루어지다
AnimatorSample.java(발췌문)private Handler mHandler = new Handler();
private ScheduledExecutorService mScheduledExecutor;
private TextView mLblMeasuring;
private void startMeasure() {
/**
* 点滅させたいView
* TextViewじゃなくてもよい。
*/
mLblMeasuring = (TextView) findViewById(R.id.lbl_measuring);
/**
* 第一引数: 繰り返し実行したい処理
* 第二引数: 指定時間後に第一引数の処理を開始
* 第三引数: 第一引数の処理完了後、指定時間後に再実行
* 第四引数: 第二、第三引数の単位
*
* new Runnable(無名オブジェクト)をすぐに(0秒後に)実行し、完了後1700ミリ秒ごとに繰り返す。
* (ただしアニメーションの完了からではない。Handler#postが即時実行だから??)
*/
mScheduledExecutor = Executors.newScheduledThreadPool(2);
mScheduledExecutor.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
mLblMeasuring.setVisibility(View.VISIBLE);
// HONEYCOMBより前のAndroid SDKがProperty Animation非対応のため
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
animateAlpha();
}
}
});
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void animateAlpha() {
// 実行するAnimatorのリスト
List<Animator> animatorList = new ArrayList<Animator>();
// alpha値を0から1へ1000ミリ秒かけて変化させる。
ObjectAnimator animeFadeIn = ObjectAnimator.ofFloat(mLblMeasuring, "alpha", 0f, 1f);
animeFadeIn.setDuration(1000);
// alpha値を1から0へ600ミリ秒かけて変化させる。
ObjectAnimator animeFadeOut = ObjectAnimator.ofFloat(mLblMeasuring, "alpha", 1f, 0f);
animeFadeOut.setDuration(600);
// 実行対象Animatorリストに追加。
animatorList.add(animeFadeIn);
animatorList.add(animeFadeOut);
final AnimatorSet animatorSet = new AnimatorSet();
// リストの順番に実行
animatorSet.playSequentially(animatorList);
animatorSet.start();
}
}, 0, 1700, TimeUnit.MILLISECONDS);
}
Reference
이 문제에 관하여(문장을 유창하게 반짝이다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AbeHaruhiko/items/2b2618cebc996728cb50
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
AnimatorSample.java(발췌문)
private Handler mHandler = new Handler();
private ScheduledExecutorService mScheduledExecutor;
private TextView mLblMeasuring;
private void startMeasure() {
/**
* 点滅させたいView
* TextViewじゃなくてもよい。
*/
mLblMeasuring = (TextView) findViewById(R.id.lbl_measuring);
/**
* 第一引数: 繰り返し実行したい処理
* 第二引数: 指定時間後に第一引数の処理を開始
* 第三引数: 第一引数の処理完了後、指定時間後に再実行
* 第四引数: 第二、第三引数の単位
*
* new Runnable(無名オブジェクト)をすぐに(0秒後に)実行し、完了後1700ミリ秒ごとに繰り返す。
* (ただしアニメーションの完了からではない。Handler#postが即時実行だから??)
*/
mScheduledExecutor = Executors.newScheduledThreadPool(2);
mScheduledExecutor.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
mLblMeasuring.setVisibility(View.VISIBLE);
// HONEYCOMBより前のAndroid SDKがProperty Animation非対応のため
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
animateAlpha();
}
}
});
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void animateAlpha() {
// 実行するAnimatorのリスト
List<Animator> animatorList = new ArrayList<Animator>();
// alpha値を0から1へ1000ミリ秒かけて変化させる。
ObjectAnimator animeFadeIn = ObjectAnimator.ofFloat(mLblMeasuring, "alpha", 0f, 1f);
animeFadeIn.setDuration(1000);
// alpha値を1から0へ600ミリ秒かけて変化させる。
ObjectAnimator animeFadeOut = ObjectAnimator.ofFloat(mLblMeasuring, "alpha", 1f, 0f);
animeFadeOut.setDuration(600);
// 実行対象Animatorリストに追加。
animatorList.add(animeFadeIn);
animatorList.add(animeFadeOut);
final AnimatorSet animatorSet = new AnimatorSet();
// リストの順番に実行
animatorSet.playSequentially(animatorList);
animatorSet.start();
}
}, 0, 1700, TimeUnit.MILLISECONDS);
}
Reference
이 문제에 관하여(문장을 유창하게 반짝이다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AbeHaruhiko/items/2b2618cebc996728cb50텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)