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 回答