如何设置图像视图的边框

时间:2012-06-11 07:03:30

标签: android android-imageview

enter image description here

我在Android应用程序中工作,我希望在我的视图中将ImageView放在特定位置。为此,我应用了特定代码并成功运作:

ImageView image = (ImageView) findViewById(R.id.imageView1);
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.mrng);
Matrix mat = new Matrix();
mat.postRotate(350);
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(),bMap.getHeight(), mat, true);
image.setImageBitmap(bMapRotate);

现在我想为此图片设置边框。为此,我做了一个形状xml,我已经设置为图像视图的背景。

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <stroke android:width="3dp" android:color="#000000" />
</shape>

但是当我给出图像视图的背景形状时,它没有给出正确的输出。请帮助我。

我不希望在ImageView周围有边框,而是围绕旋转的图像边框。

2 个答案:

答案 0 :(得分:4)

编辑:我完全根据问题的澄清重写了我的答案。这就是我如何实现你想要的。想法是绘制框架,然后旋转:

    ImageView image = (ImageView) findViewById(R.id.TestImage);
    Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);

    final int BORDER_WIDTH = 3;
    final int BORDER_COLOR = Color.BLACK;
    Bitmap res = Bitmap.createBitmap(bMap.getWidth() + 2 * BORDER_WIDTH,
                                     bMap.getHeight() + 2 * BORDER_WIDTH,
                                     bMap.getConfig());
    Canvas c = new Canvas(res);
    Paint p = new Paint();
    p.setColor(BORDER_COLOR);
    c.drawRect(0, 0, res.getWidth(), res.getHeight(), p);
    p = new Paint(Paint.FILTER_BITMAP_FLAG);
    c.drawBitmap(bMap, BORDER_WIDTH, BORDER_WIDTH, p);

    Matrix mat = new Matrix();
    mat.postRotate(350);
    Bitmap bMapRotate = Bitmap.createBitmap(res, 0, 0, res.getWidth(), res.getHeight(), mat, true);
    image.setImageBitmap(bMapRotate);        

以下是结果截图:

enter image description here

答案 1 :(得分:0)

有一种方法可以在ImageView中放置边框甚至是android中的任何视图。在XML中,在imageview的每一侧放置了四个简单的<View>。这些视图可以分配任何类型的样式。您可以使用相对布局,您可以在图像视图中轻松放置四个边框。

有点漫长的过程但有效。