私は 10 個の textswitcher を持っています.5 個は販売量、5 個はガロン量であり、最後の textswitcher の値が 10 に達した場合に応じてその値が増加します。
常に 100 回ループでトラバースする価格を表示する可能性が高くなります。値を 0 から 10 に増加させる最後の textswitcher のアニメーション時間を設定しました。10 に達すると 0 に戻り、次の textswitcher 値が増分され、最後の textswticher のアニメーション時間は 50 ミリ秒です。このアニメーションを 5 秒で完了する必要があります。何か助けていただければ幸いです?(ありがとう) これが私のクラスです -:
Myclass.java
private void createUi() {
setContentView(R.layout.layout_sale_complete);
linearLayout = (LinearLayout) findViewById(R.id.receiptLLActivity);
TextView title = (TextView) findViewById(R.id.screenTitle);
title.setText(getString(R.string.sale_complete));
seePointEarned = (Button)findViewById(R.id.pointsEarnedButton);
int[] saleTV = { R.id.sa1, R.id.sa2, R.id.sa3, R.id.sa4, R.id.sa5 };
Animation out_gallon = AnimationUtils.loadAnimation(this,
R.anim.slide_up_from_center);
Animation in_gallon = AnimationUtils.loadAnimation(this,
R.anim.slide_up_from_bottom);
Animation out = AnimationUtils.loadAnimation(this,
R.anim.slide_up_from_center);
Animation in = AnimationUtils.loadAnimation(this,
R.anim.slide_up_from_bottom);
Animation down = AnimationUtils.loadAnimation(this,
R.anim.slide_down_receipt);
Animation inSlow = AnimationUtils.loadAnimation(this,
R.anim.slide_up_from_bottom_slow);
Animation outSlow = AnimationUtils.loadAnimation(this,
R.anim.slide_up_from_center_slow);
for (int i = 0; i < saleTV.length; i++) {
sale[i] = (TextSwitcher) findViewById(saleTV[i]);
sale[i].setFactory(this);
saleCounter[i] = Integer.parseInt(saleDigits[i]);
}
for (int i = 0; i < gallonCounter.length; i++) {
if (i == 4) {
gallon[i].setInAnimation(in_gallon);
gallon[i].setOutAnimation(out_gallon);
sale[i].setInAnimation(in);
sale[i].setOutAnimation(out);
} else {
gallon[i].setInAnimation(inSlow);
gallon[i].setOutAnimation(outSlow);
sale[i].setInAnimation(inSlow);
sale[i].setOutAnimation(outSlow);
}
}
new AsyncTask<Void, String, String>() {
@Override
protected String doInBackground(Void... params) {
if (finalValueSale == 0) {
Log.i("do in back final value null ", "0");
return null;
}
do {
if (saleStopFlag == false
&& buildFinalValue("sale") >= finalValueSale) {
saleStopFlag = true;
}
if (gallonStopflag == false
&& buildFinalValue("gallon") >= finalValueGallon) {
gallonStopflag = true;
}
if (saleStopFlag == true && gallonStopflag == true) {
break;
}
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (saleStopFlag == false) {
if (++saleCounter[4] == 10) {
saleCounter[4] = 0;
if (++saleCounter[3] == 10) {
saleCounter[3] = 0;
if (++saleCounter[2] == 10) {
saleCounter[2] = 0;
if (++saleCounter[1] == 10) {
saleCounter[1] = 0;
sale[0].setText(String
.valueOf(++saleCounter[0]));
}
sale[1].setText(String
.valueOf(saleCounter[1]));
}
sale[2].setText(String
.valueOf(saleCounter[2]));
}
sale[3].setText(String
.valueOf(saleCounter[3]));
}
sale[4].setText(String.valueOf(saleCounter[4]));
}
if (gallonStopflag == false) {
if (++gallonCounter[4] == 10) {
gallonCounter[4] = 0;
if (++gallonCounter[3] == 10) {
gallonCounter[3] = 0;
if (++gallonCounter[2] == 10) {
gallonCounter[2] = 0;
if (++gallonCounter[1] == 10) {
gallonCounter[1] = 0;
gallon[0]
.setText(String
.valueOf(++gallonCounter[0]));
}
gallon[1].setText(String
.valueOf(gallonCounter[1]));
}
gallon[2].setText(String
.valueOf(gallonCounter[2]));
Log.i("gallon2", String
.valueOf(gallonCounter[2]));
}
gallon[3].setText(String
.valueOf(gallonCounter[3]));
}
gallon[4].setText(String
.valueOf(gallonCounter[4]));
}
}
});
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (NullPointerException e) {
Logger.e(TAG, "Null pointer exception", e);
Thread.currentThread().interrupt();
break;
}
} while (true);
if(buildFinalValue("gallon") > finalValueGallon) {
runOnUiThread(new Runnable() {
@Override
public void run() {
gallon[0].setText(gallonDigits[0]);
gallon[1].setText(gallonDigits[1]);
gallon[2].setText(gallonDigits[2]);
gallon[3].setText(gallonDigits[3]);
gallon[4].setText(gallonDigits[4]);
}
});
}
if(buildFinalValue("sale") > finalValueSale) {
runOnUiThread(new Runnable() {
@Override
public void run() {
sale[0].setText(saleDigits[0]);
sale[1].setText(saleDigits[1]);
sale[2].setText(saleDigits[2]);
sale[3].setText(saleDigits[3]);
sale[4].setText(saleDigits[4]);
}
});
}
return null;
}
}.execute();
}
public View makeView() {
TextView t = new DinProMediumTextView(this);
t.setTextColor(getResources().getColor(R.color.white));
Shader shader = new RadialGradient(Utility.convertDpToPixel(15,
getResources().getDisplayMetrics().densityDpi),
Utility.convertDpToPixel(30,
getResources().getDisplayMetrics().densityDpi),
Utility.convertDpToPixel(12,
getResources().getDisplayMetrics().densityDpi),
getResources().getColor(R.color.full_white), getResources()
.getColor(R.color.grey), TileMode.CLAMP);
t.getPaint().setShader(shader);
t.setTextSize(43);
return t;
}
アニメーション xml ファイルは次のとおりです。
slide_up_from_center.xml =
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0%p" android:toYDelta="-100%p"
android:duration="50" android:interpolator="@android:anim/linear_interpolator" />
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="50" android:interpolator="@android:anim/linear_interpolator" />
</set>
slide_up_from_bottom.xml =
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="50" android:interpolator="@android:anim/linear_interpolator" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="50" android:interpolator="@android:anim/linear_interpolator" />
</set>
slide_up_from_bottom_slow.xml =
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="120" android:interpolator="@android:anim/linear_interpolator" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="120" android:interpolator="@android:anim/linear_interpolator" />
</set>
slide_up_from_center_slow.xml =
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0%p" android:toYDelta="-100%p"
android:duration="120" android:interpolator="@android:anim/linear_interpolator" />
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="120" android:interpolator="@android:anim/linear_interpolator" />
</set>
これの何が問題なのかわからない。