3

ここに画像の説明を入力

私は 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 の周りに境界線は必要ありませんが、回転した画像の周りに境界線が必要です。

4

2 に答える 2

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

結果のスクリーンショットは次のとおりです。

ここに画像の説明を入力

于 2012-06-11T07:16:07.737 に答える
0

Android のどのビューでも ImageView の周りに境界線を配置する方法があります。XML<View>では、imageview の両側に 4 つの simple を配置します。これらのビューには、任意のタイプのスタイルを割り当てることができます。画像ビューの周囲に 4 つの境界線を簡単に配置できる相対レイアウトを使用できます。

ちょっと長いプロセスですが、うまくいきます。

于 2012-06-11T07:12:50.330 に答える