みんな私はそれが点滅する必要があるテキストビューを持っていますそれを手伝ってください。
<TextView
Android:id="@+id/usage"
Android:layout_marginTop="220dip"
Android:layout_marginLeft="45dip"
Android:layout_marginRight="15dip"
Android:typeface="serif"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Google "
Android:textColor="#030900"/>
Googleテキストを点滅させたい
これは、Androidの前の3.0
バージョン、SolArabehetyの回答を使用するか、 this threadをご覧ください。
package teste.blink;
import Android.app.Activity;
import Android.os.Bundle;
import Android.os.Handler;
import Android.view.View;
import Android.widget.TextView;
public class TesteBlinkActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
blink();
}
private void blink(){
final Handler handler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
int timeToBlink = 1000; //in milissegunds
try{Thread.sleep(timeToBlink);}catch (Exception e) {}
handler.post(new Runnable() {
@Override
public void run() {
TextView txt = (TextView) findViewById(R.id.usage);
if(txt.getVisibility() == View.VISIBLE){
txt.setVisibility(View.INVISIBLE);
}else{
txt.setVisibility(View.VISIBLE);
}
blink();
}
});
}
}).start();
}
<TextView
Android:id="@+id/usage"
Android:layout_marginTop="220dip"
Android:layout_marginLeft="45dip"
Android:layout_marginRight="15dip"
Android:typeface="serif"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Google "
Android:textColor="#030900"/>
これを使用できます:
TextView myText = (TextView) findViewById(R.id.myText );
Animation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(50); //You can manage the blinking time with this parameter
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
myText.startAnimation(anim);
これは私がこの投稿で与えたのと同じ答えです Android view
お役に立てれば!
この目的のためにXMLアニメーションを使用します。
R.anim.blink
<?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>
点滅アクティビティ:次のように使用します:-
public class BlinkActivity extends Activity implements AnimationListener {
TextView txtMessage;
Button btnStart;
// Animation
Animation animBlink;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blink);
txtMessage = (TextView) findViewById(R.id.txtMessage);
btnStart = (Button) findViewById(R.id.btnStart);
// load the animation
animBlink = AnimationUtils.loadAnimation(this,
R.anim.blink);
// set animation listener
animBlink.setAnimationListener(this);
// button click event
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtMessage.setVisibility(View.VISIBLE);
// start the animation
txtMessage.startAnimation(animBlink);
}
});
}
@Override
public void onAnimationEnd(Animation animation) {
// Take any action after completing the animation
// check for blink animation
if (animation == animBlink) {
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
}
クエリがあれば教えてください。
AlphaAnimation を作成し、テキストビューを設定するアクティビティのテキストビューに適用します。点滅は、アニメーションを1.0アルファから0.0アルファから1.0アルファまで繰り返すことで実現されます。
Edit:Google provideth 。
これを設定する必要はありません。アルファのみ:
anim/flash_leave_now.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:duration="900"
Android:fromAlpha="1.0"
Android:repeatCount="infinite"
Android:repeatMode="reverse"
Android:toAlpha="0.2"/>
コード内:
mTextView.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.flash_leave_now));
トップの答えへの礼儀、これは私がやったことです:
textBlink = new TimerTask() {
int countdown = 10;
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (countdown <= 0) {
timer.cancel();
textview.setVisibility(View.GONE);
} else {
textview.setVisibility(textview.getVisibility() == View.VISIBLE?View.GONE:View.VISIBLE);
countdown--;
}
}
});
}
};
それからコードのどこかに:
timer = new Timer();
timer.scheduleAtFixedRate(textBlink,0,500);
これにより、5秒間点滅効果が行われます。 fadeIn-fadeOut効果が必要ない場合に推奨されます。
アニメーションを作成することもできますし、View.VISIBLEとView.INVISIBLEをタイマーで作成しないのはなぜですか?私はより良い方法は確かにアルファ付きのアニメーションだと思う:)
private fun blink() {
val handler = Handler()
Thread(Runnable {
val timeToBlink = 500 //in milissegunds
try {
Thread.sleep(timeToBlink.toLong())
} catch (e: Exception) {
}
handler.post(Runnable {
if (usage.visibility == View.VISIBLE) {
usage.visibility = View.INVISIBLE
} else {
usage.visibility = View.VISIBLE
}
blink()
})
}).start()
}
<blink/>
タグ。
<blink
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<TextView
Android:id="@+id/usage"
Android:layout_marginTop="220dip"
Android:layout_marginLeft="45dip"
Android:layout_marginRight="15dip"
Android:typeface="serif"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Google "
Android:textColor="#030900"/>
</blink>
public final class BlinkEffectUtils {
private static BlinkEffectUtils blinkEffect;
public enum PROPERTY_TYPE {
BACKGROUND_COLOR,
TEXT_COLOR
}
private BlinkEffectUtils() {
}
public static BlinkEffectUtils getInstance(Context context) {
if (blinkEffect == null) {
blinkEffect = new BlinkEffectUtils();
}
return blinkEffect;
}
public void setBlinkEffect(Object targetView, PROPERTY_TYPE property_type, int duration, int defaultColor, int effectColor) {
String propertyName = "";
switch (property_type) {
case TEXT_COLOR:
propertyName = "textColor";
break;
case BACKGROUND_COLOR:
propertyName = "backgroundColor";
break;
}
@SuppressLint("ObjectAnimatorBinding")
ObjectAnimator anim = ObjectAnimator.ofInt(targetView, propertyName,
effectColor,
defaultColor);
anim.setDuration(duration);
anim.setEvaluator(new ArgbEvaluator());
anim.setRepeatMode(ValueAnimator.REVERSE);
anim.setRepeatCount(ValueAnimator.INFINITE);
anim.start();
}
}