46 votes

Android Tuile Bitmap

Je suis en train de charger un bitmap dans Android qui je tiens à carreau. Je suis actuellement à l'aide de la suite de mon point de vue pour afficher une image bitmap:

canvas.drawBitmap(bitmap, srcRect, destRect, null)

J'ai essentiellement souhaitez utiliser cette image comme une image de fond dans mon application et voudrais répéter l'image bitmap dans les deux directions X et Y.

J'ai vu le TileMode.RÉPÉTITION constante pour le BitmapShader classe, mais je suis pas sur si c'est pour répéter qu'il bitmap réelle ou à l'application d'un filtre à l'image.

131voto

branchgabriel Points 2436

Vous devez faire cela dans le fichier xml à la place du code java. Je n'ai pas essayé moi-même mais j'ai trouvé cet exemple.

<xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/MainLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/backrepeat"
>

puis dans un fichier xml appelé backrepeat.xml

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

référence

37voto

Izkata Points 3634

Compris la version du code:

  BitmapDrawable TileMe = new BitmapDrawable(MyBitmap);
  TileMe.setTileModeX(Shader.TileMode.REPEAT);
  TileMe.setTileModeY(Shader.TileMode.REPEAT);

  ImageView Item = new ImageView(this);
  Item.setBackgroundDrawable(TileMe);

Alors si vous avez un drawable à carreau, ce qui peut être utilisé au lieu de faire de la BitmapDrawable:

  BitmapDrawable TileMe = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.tile));

16voto

Bo. Points 509

L'backrepeat.xml ci-dessus est buggé

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

6voto

kgiannakakis Points 62727

Il semble que certaines personnes sont intéressés à faire de cette dans une Vue, à la méthode onDraw. Le code suivant a fonctionné pour moi:

bgTile = BitmapFactory.decodeResource(context.getResources(), R.drawable.bg_tile);

float left = 0, top = 0;
float bgTileWidth = bgTile.getWidth();
float bgTileHeight = bgTile.getHeight();

while (left < screenWidth) {
    while (top < screenHeight) {
        canvas.drawBitmap(bgTile, left, top, null);
        top += bgTileHeight;
    }
    left += bgTileWidth;
    top = 0;
}

5voto

navi Points 139
<xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/MainLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/back"
    android:tileMode="repeat"
>

Cela a bien fonctionné pour moi. Je n'ai pas eu à créer l'image bitmap séparément. J'ai utilisé le tileMode attribut dans la mise en page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X