在动画到倾斜期间,视图得到了像素化

时间:2013-09-03 06:13:41

标签: java android android-animation

在动画期间视图得到了像素化我只想在我尝试滚动时获得一点倾斜。我正在使用Universal-Image-Library来处理动画。我倾向于在倾斜视图时获得3D外观。

第一张照片就是我想要的。enter image description here


但下面这张照片,我的内容。下面的视图得到了像素化。

enter image description here

  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();

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

请尝试关闭硬件渲染

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    mHeaderImage.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}