android - 位图可绘制( map 叠加项)在android中旋转后像素化

标签 android bitmap drawable itemizedoverlay

我正在尝试旋转叠加层可绘制对象以表示 Android 中的叠加项。

我用这个:

Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.map_pin);
        Bitmap targetBitmap = Bitmap.createBitmap((bmpOriginal.getWidth()),
                (bmpOriginal.getHeight()), 
                Bitmap.Config.ARGB_8888);

        Matrix matrix = new Matrix();       
        matrix.setRotate((float) lock.getDirection(),(float) (bmpOriginal.getWidth()/2),
                (float)(bmpOriginal.getHeight()/2));

        Canvas tempCanvas = new Canvas(targetBitmap); 
            tempCanvas.drawBitmap(bmpOriginal, matrix, null);
Drawable d = new BitmapDrawable(getResources(),targetBitmap);

            //overlayitem.setMarker(drawable);

    mapItemizedOverlay =
                    new MyItemizedOverlay<MyItemizedOverlayItem>(d, mapView);

问题是图像质量变差了。像素化发生了。有什么解决办法吗?

最佳答案

这段代码非常适合我

Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.map_pin);
        Bitmap targetBitmap = Bitmap.createBitmap((bmpOriginal.getWidth()),
                (bmpOriginal.getHeight()), 
                Bitmap.Config.ARGB_8888);
        Paint p = new Paint();
        p.setAntiAlias(true);
        p.setDither(true);
        p.setFilterBitmap(true);

        Matrix matrix = new Matrix();       
        matrix.setRotate((float) lock.getDirection(),(float) (bmpOriginal.getWidth()/2),
                (float)(bmpOriginal.getHeight()/2));

        RectF rectF = new RectF(0, 0, bmpOriginal.getWidth(), bmpOriginal.getHeight());
        matrix.mapRect(rectF);

        targetBitmap = Bitmap.createBitmap((int)rectF.width(), (int)rectF.height(), Bitmap.Config.ARGB_8888);


        Canvas tempCanvas = new Canvas(targetBitmap); 
        tempCanvas.drawBitmap(bmpOriginal, matrix, p);

关于android - 位图可绘制( map 叠加项)在android中旋转后像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13048953/

相关文章:

android - Drawable 的深拷贝

android - 如何在android中滚动显示多行文本?

Android Textview 不在 fragment 中显示文本

java - Android - 在处理图像时,将其存储或在临时内存中使用更好吗?

c - 查找位数组中的第一个零

android - 奇怪的 R.java 问题导致可绘制资源未正确加载

android - 连接 Android 与 Openstack 服务

android - 关于 Android 应用程序中的多任务处理

ios - 如何编写核心数据获取请求谓词以将 NSNumber 作为位图进行比较

android - 将图像从 drawable 保存到 Android 中的内部文件存储