5

ランダムな小さなパターンのセットの繰り返しパターンを特定の領域に制限したいと思います。キャンバスを使用して1つのオブジェクト(CustomView)を作成しています。xmlコードを使用してレイアウト上でパターンを繰り返す方法を知っています。

<bitmap
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@drawable/patterntwo"
  android:tileMode="repeat" />

これはキャンバスでは機能しません。

基本的に、カスタムビューの背景画像としてビットマップを使用し、X方向とY方向の両方でビットマップを繰り返したいと考えています。

この画像を見てください

ここに画像の説明を入力してください

4

2 に答える 2

7

このコードで試してください:-

paint = new Paint(Paint.FILTER_BITMAP_FLAG);
Shader mShader1 = new BitmapShader(bitmap, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
paint.setShader(mShader1);
于 2012-07-10T09:35:57.690 に答える
2

背景ビットマップを繰り返してカスタム コンポーネントを作成できます。

BitmapDrawable bitmapBg = new BitmapDrawable(BitmapFactory.decodeResource(
            getResources(), R.drawable.repeatbg));
bitmapBg.setTileModeX(Shader.TileMode.REPEAT);
image.setBackgroundDrawable(bitmapBg);

そして、その三角形とあなたの背景のように、あなたが望むイメージでマスクを作ることができます.

public static Bitmap getMaskedContactImage(Context context,
        Bitmap contactImageBitmap, int maskToBeApplied) {
    Bitmap mask = BitmapFactory.decodeResource(context.getResources(),
            maskToBeApplied);
    Bitmap output = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(),
            Config.ARGB_8888);
    final Rect finalRect = new Rect(0, 0, contactImageBitmap.getWidth(),
            contactImageBitmap.getHeight());
    final Rect originRect = new Rect(0, 0, mask.getWidth(),
            mask.getHeight());
    Canvas canvas = new Canvas(output);

    Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    xferPaint.setColor(Color.BLACK);

    xferPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

    canvas.drawBitmap(contactImageBitmap, finalRect, originRect, null);
    canvas.drawBitmap(mask, originRect, originRect, xferPaint);

    contactImageBitmap.recycle();
    mask.recycle();

    return output;
}

これは、黒色が最終イメージであるマスクを使用します。

誤解していなければ、キャプチャで示していることを達成できます。

よろしく、アレックス

于 2012-07-06T08:24:20.227 に答える