0

私のアプリは温度変換アプリです。2 つのスピナーがあるため、1 つにはソース メトリックのリストが含まれ、もう 1 つにはターゲット メトリックのリストが含まれます (同じアレイ アダプターからロードされたようです)。交換ボタンの機能は、ソース側のスピナー メトリックをターゲット側のスピナー メトリックに、またはその逆に変更することです。つまり、ソース スピナーで摂氏を選択し、ターゲット スピナーでケルビンを選択した場合、交換ボタンを押すと、スピナーのメトリック名が交換されます (対応するテキスト ボックスの値は、新しいソースとターゲットに基づいて計算されます)。メトリック)。

サンプルコード:

            int srcposn = sourceSpinner.getSelectedItemPosition();
            int tgtposn = targetSpinner.getSelectedItemPosition();
            sourceSpinner.setSelection(tgtposn);
            targetSpinner.setSelection(srcposn);

私の質問は、交換ボタンを押すと交換が行われるということですが、交換が行われたことを示す適切なアニメーションがありません。友達にアプリを渡したとき、彼らはスワップが実際に起こったことを特定できませんでした。私でさえ気付かなかった:) .

ユーザーにとってスワップがより明確に見えるようにする方法について、いくつか提案をお願いします。申し訳ありませんが、私はこのフォーラムに不慣れなため、画像を投稿できませんでした。 アプリの画像グラブ

助けてくれてありがとう!

4

1 に答える 1

0

私の知る限り、この場合、Android アニメーションは使用されません。ボタンを押したときに一部の値が変更されたことをユーザーに伝えるために、通常はToastをポップアップします。これはシンプルで効果的です。また、デザインが気に入らない場合は、必要に応じてカスタマイズできます。私が送信したリンク(Toast)ですべて説明されています。

ボタンでこれを使用するだけOnClickListener()です:

int srcposn = sourceSpinner.getSelectedItemPosition();
int tgtposn = targetSpinner.getSelectedItemPosition();
sourceSpinner.setSelection(tgtposn);
targetSpinner.setSelection(srcposn);

Toast toast = Toast.makeText(
                    HomeActivity.this, 
                    "Units Successfully Changed", 
                    Toast.LENGTH_SHORT);
toast.show();

編集:

ただし、スピナーを数秒間ハイライトするなどの効果を実行したい場合は... この問題についてウェブ上で適切なヘルプが見つからなかったので、ImageViews. アニメ化ImageViewsするには を使用してImageSwitcher2 つのイコールを作成ImageViewsするので、基本的には同じことです。アイデアは、次のような関数を使用して、2 つの新しい を作成しSpinners、他のものの上と左に配置することです。

/**
 * Creates a new {@link Spinner} which overlays another
 * @param spinner {@link Spinner} to overlay
 * @return The new {@link Spinner}
 */
private Spinner createNewSpinner(Spinner spinner){
    LayoutParams spinnerParams = new LayoutParams(spinner.getWidth(), LayoutParams.WRAP_CONTENT);
    spinnerParams.addRule(RelativeLayout.ALIGN_TOP, spinner.getId());
    spinnerParams.addRule(RelativeLayout.ALIGN_LEFT, spinner.getId());

    Spinner overlaySpinner = new Spinner(HomeActivity.this);
    overlaySpinner.setLayoutParams(spinnerParams);

    return overlaySpinner;
}

効果については、次のようなものを作成できると思いますが、100% 機能するかどうかはわかりません。より多くのサポートを読むには、アニメーションを読んでください:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
    android:background="@drawable/bg_orange"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:fromAlpha="1.0" android:toAlpha="0.0"
    android:duration="400"
/>

アニメーションをロードするには、このコードを使用できますが、2 つのエフェクトを同時にトリガーしたいので、Spinnersこのアイデアに従ってすべてを実行できるかどうかはわかりません。だから前に言わなかったんだ。

Animation animation = AnimationUtils.loadAnimation(this, R.anim.disapear);
sourceSpinner.startAnimation(animation);

それが役に立てば幸い!

于 2012-08-26T12:45:49.480 に答える