2

動いている「フローティング」テキストを作業中のアプリケーションに追加したいと思います。

次のような基本的なレイアウトを備えた実用的なアプリケーションがあります。

<LinearLayout>
    <TextView />
    <TextView /> 
</LinearLayout>

私のアプリは TextViews を動的に追加するので、スクロールビューが必要です...

ユーザーがどこかをクリックするたびに「+1」が表示され、上に浮かんで(移動して)画面の上部に消えるなど、小さな表示が必要です。どなたか簡単な方法を教えていただけるとありがたいです。

  • TextView動的に作成してレイアウトに追加する必要がありますか?
  • テキストを相対的に移動できるように、ScrollView に重なる相対的なレイアウトを追加する必要がありますか?
  • 自分で作ったキャンバスに描いてみようかな。
  • を使用して、ObjectAnimatorすべて「アニメーション化」する必要がありますか?

私はこれらの経験がないので、これらすべてを試す前に、誰かが最も簡単なルートを教えてくれることを願っています...

アップデート:

特定の位置に「ホバリング」テキスト ビューを作成できました (まだ動きはありません)。

  • 以前のレイアウトにルート レイアウトとして RelativeLayout を追加しました。
  • フローティング テキストのレイアウトを作成しました。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/floatingViewLinearLayout" >
      <TextView />
    </LinearLayout>
    
  • それを処理するコスチューム ビューを作成しました。

public class FloatingText extends View {

private View floatingLayoutView;

public FloatingText(Context context) {
    super(context);
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    floatingLayoutView = inflater.inflate(R.layout.floating_text, null);

    TextView tv = (TextView) floatingLayoutView
            .findViewById(R.id.flaotingViewTextView);
    tv.setText("+1");
    tv.setBackgroundColor(Color.TRANSPARENT);
    tv.setTextColor(Color.RED);
    tv.setTypeface(Typeface.MONOSPACE);
    tv.bringToFront();
 }
 public View getFloatingLayoutView() {
    return floatingLayoutView;
 }

}

ビューを受け取る get メソッドを追加したことに注意してください。これは恐ろしい解決策だと確信しています。次に、私がそれをどのように使用したかを見ることができます:

  • メイン アクティビティの onResume に次のコードを追加します。

    RelativeLayout main = (RelativeLayout) findViewById(R.id.MainRelativeLayout);
    FloatingText ft = new FloatingText(this);
    final View floatingLayoutView = ft.getFloatingLayoutView();
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
            new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
    lp.setMargins(140, 300, 0, 0);
    floatingLayoutView.setLayoutParams(lp);
    
    main.addView(floatingLayoutView);
    

FloatingText クラスに addView 自体を実行させたいのですが、それを行うためのクリーンな方法についてはまだわかりません。

次の課題は、API 8 と互換性のある方法でアニメーション化することです。API 11 でアニメーション ヘルパーが追加され、API 12 で一部 (amAlsoNew が言及した viewproperanimator など) が追加されたようです。

繰り返しになりますが、ポインタやイセアは大歓迎です!

4

1 に答える 1

2

通常の変換アニメーションまたはObjectAnimatorまたはViewproperty アニメーターをこの目的で使用できます (: ObjectAnimator /Viewproperty アニメーターはAndroid バージョン 3未満では使用できません)。

ビューが画面の下部にあり、画面の高さが 512px であるとします。(アニメーションリスナーを使用して)次の方法で、UPアニメーションの翻訳を実行できます。

view.animate().translationYBy(-512).setListener(new AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {


        }

        @Override
        public void onAnimationRepeat(Animator animation) {


        }

        @Override
        public void onAnimationEnd(Animator animation) {
            // after animation set visibility gone
            view.setVisibility(View.GONE);
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            view.setVisibility(View.GONE);
        }
    });
于 2013-07-08T17:15:59.430 に答える