3

アニメーション中にビューが頭がおかしくなったので、スクロールしようとしているときに少し傾けたいだけでした。Universal-Image-Library を使用してアニメーションを処理しています。ビューを傾けるときに 3D の外観を実現したいと考えています。

最初の写真は、私が欲しいものです。ここに画像の説明を入力


しかし、下のこの写真は、私が持っているものです。以下のビューは頭がおかしくなりました。

ここに画像の説明を入力

  private void rotateLeftFrag(View af) {


        if (af != null) {
            ObjectAnimator.ofFloat(af, "rotationY", 5, 0)
                    .setDuration(100).start();
                  }
    }

ObjectAnimator com.nineoldandroids.animation.ObjectAnimator.ofFloat(Object target, String 
                                   propertyName, float... values)

ビューのスムーズなアニメーションまたはタイトル付けを実現するために、これに対する解決策はありますか? ありがとう

アップデート:

            float density = getResources().getDisplayMetrics().density;
            float scale = getResources().getDisplayMetrics().density;
            af.setCameraDistance(density * scale);
            ObjectAnimator.ofFloat(af, "rotationY", .5f, 0).setDuration(500).start();
4

2 に答える 2

1

このビデオはあなたに役立つと思います:

http://www.youtube.com/watch?v=pMcu35-tVls

2:10 で、回転する長方形の各辺に 1 つの透明ピクセルを追加することについて話しています。エッジは境界線ではなく長方形の内側にあるため、エッジを滑らかにするのに役立ちます。

ソースコードへのリンクはビデオの下にあります。

表示されない場合: http://developer.android.com/shareables/devbytes/CardFlip.zip

見たいクラスはCardView、メソッドbitmapWithBorder:

private static final int ANTIALIAS_BORDER = 1;

/**
 *  Adding a 1 pixel transparent border around the bitmap can be used to
 *  anti-alias the image as it rotates.
 */
private BitmapDrawable bitmapWithBorder(BitmapDrawable bitmapDrawable) {
    Bitmap bitmapWithBorder = Bitmap.createBitmap(bitmapDrawable.getIntrinsicWidth() +
            ANTIALIAS_BORDER * 2, bitmapDrawable.getIntrinsicHeight() + ANTIALIAS_BORDER * 2,
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmapWithBorder);
    canvas.drawBitmap(bitmapDrawable.getBitmap(), ANTIALIAS_BORDER, ANTIALIAS_BORDER, null);
    return new BitmapDrawable(getResources(), bitmapWithBorder);
}
于 2013-09-10T14:41:05.323 に答える
0

ハードウェア レンダリングをオフにしてみてください

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    mHeaderImage.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
于 2014-12-30T11:35:49.520 に答える