1

私は 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>

これの何が問題なのかわからない。

4

0 に答える 0