2

はるかに複雑な機能の一部として、画面の特定のポイントで円が不透明になるのを表示する機能に固執しています。

アニメーションコードが次のようなテストプロジェクトを作成するところまで行ってきました。

View mLongPressImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mLongPressImage = findViewById(R.id.onPressImage);

     findViewById(R.id.button).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                startAnimation(v.getX(), v.getY());
            }
        });
}

private AlphaAnimation onPressAnimation;

private void startAnimation(final float f, final float g) {
    Log.v("", "START");
    mLongPressImage.setX(f);
    mLongPressImage.setY(g);
    onPressAnimation = new AlphaAnimation(0f, 1f);
    onPressAnimation.setDuration(1000);
    onPressAnimation.setFillAfter(true);
    onPressAnimation.setFillEnabled(true);
    mLongPressImage.startAnimation(onPressAnimation);
}

ロギングショーの正しいイベントが発生しています。

ビューは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="PRESS ME" />

    <ImageView
        android:id="@+id/onPressImage"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#000000"
        android:scaleType="fitXY"
        android:src="@drawable/shape_circle_onpress" />

</FrameLayout>

現在、画像は1秒が経過した後の座標に表示されます。

この非常に単純な機能の隠れた欠陥を誰かが指摘できますか?

4

2 に答える 2

1

上記のコードは技術的に正しいようです。そのため、私はそれを解決するのに非常に大きな問題を抱えていました。

この問題はsetX()、andsetY()Animation一緒に使用したことが原因で発生しました-Xoomタブレット(3.2 API 13を実行)では、に切り替えた後でも、これによりかなりファンキーな動作が発生しましたScaleAnimation

Galaxy Nexus(API 4.0 Icecream Sandwichの実行)への切り替えと同様に、を削除してグリッチな動作を削除しますsetX()。を削除する代わりににsetY()設定hardwareAcceleratedすると、問題も改善されました(ただし、完全には修正されませんでした)。truesetX()setY()

誰かがこれがなぜであるかを知っているならば、私はこれに賛成して受け入れられた答えを変えることをとてもうれしく思います。それまでは、薄っぺらなAndroidAPIにチョークで書きます。

于 2012-07-09T09:23:47.257 に答える
0

円の周りの黒い背景に満足できない場合は、ImageView背景を次のように変更できます(アルファチャネル値を表す2つの追加のゼロに注意してください)。

android:background="#00000000"

于 2012-07-06T16:15:36.177 に答える