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

3

在动画过程中,我的视图变得模糊了。我想在滚动时实现一点倾斜。我正在使用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();

只是一个想法,你有没有查看View.setRotationY()View.setCameraDistance()方法的文档? - user
我正在进行一些关于prop-animation的实验。但是我不确定View.setRotation与我的代码有何不同,而且我还没有检查过setCameraDistance。请给我一秒钟。 - rahstame
我对 setCamera 感到困惑,因为 setRotation 是相同的。您是否希望我尝试将这两个一起使用?float scale = getResources().getDisplayMetrics().density; af.setCameraDistance(1280 * scale); - rahstame
你解决了这个问题吗?我也很感兴趣。 - Praxis Ashelin
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);
}

请提供您的源代码。Source: N/A - rahstame
我正在使用整个布局来进行动画,而不仅仅是图像。基于您的解决方案,我如何在活动视图或整个XML中使用它而不会出现像素化问题?谢谢。 - rahstame

0
请尝试关闭硬件渲染。
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    mHeaderImage.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接