Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.34 KB | None | 0 0
  1. package com.example.marcin.btm2;
  2.  
  3. import android.annotation.TargetApi;
  4. import android.content.Context;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. import android.graphics.Canvas;
  8. import android.util.AttributeSet;
  9. import android.view.View;
  10.  
  11. public class MyView extends View {
  12.  
  13.     private Bitmap theBitmap1, theBitmap2; //zmienne Bitmapy
  14.  
  15.     public MyView(Context context){
  16.         super(context);
  17.         initMyBitmaps();//wywołanie funkcji z dołu kodu
  18.     }
  19.  
  20.     public MyView(Context context, AttributeSet attrs){
  21. //AttributeSet - klasa która jest zbiorem własciwosci layoutu(wymiary,kolory itp)
  22.         super(context, attrs);
  23.         initMyBitmaps();
  24.     }
  25.  
  26.     public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
  27.         super(context, attrs, defStyleAttr);
  28.         initMyBitmaps();
  29.     }
  30.     @TargetApi(21)// targetowanie danego poziomu interfejsu API, bez względu na cel projektu
  31.     public MyView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
  32.         super(context, attrs, defStyleAttr, defStyleRes);
  33.         initMyBitmaps();
  34.     }
  35.     private void initMyBitmaps(){
  36.         Bitmap aBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rocket); //medtoda odkodywujaca nowa bitmape,Obiekt zasobów zawierający dane obrazu,Identyfikator zasobu danych obrazu
  37.         final int dstWidth = 100;
  38.         final int dstHeight = 160;                                          //true, jeśli źródło powinno być filtrowane.
  39.         theBitmap1 = Bitmap.createScaledBitmap(aBitmap, dstWidth, dstHeight, true); //metoda tworząca nowa bitmape skalowna z istniejącej bitmapy,źródło bitmapy,nowa szerokośc,nowa wysokosc,
  40.         int[] avColors = createColors();
  41.         //Zwraca niezmienną bitmapę o określonej szerokości i wysokości, z każdą wartością piksela ustawioną na odpowiadającą jej wartość w tablicy kolorów.
  42.         theBitmap2 = Bitmap.createBitmap(avColors, 0, STRIDE, WIDTH, HEIGHT, Bitmap.Config.ARGB_8888);
  43.     }
  44.     //Tablica kolorów sRGB używanych do inicjowania pikseli.,Liczba wartości do pominięcia przed pierwszym kolorem w tablicy kolorów.
  45.     //Liczba kolorów w tablicy między wierszami ,szerokośc bitmapy,wyokosc bitmapy,konfiguracja bitmapy do utworzenia
  46.     @Override
  47.     protected void onDraw(Canvas canvas){
  48.         //narysuje podana bitmape z lewym/górnym rogiem używającej bieżacej farby przekrztałcoenj przez macież
  49.         canvas.drawBitmap(theBitmap1, 0,0,null);
  50.         canvas.drawBitmap(theBitmap2, 150, 0, null);
  51.     }
  52.     private static final int WIDTH = 50;
  53.     private static final int HEIGHT = 50;
  54.     private static final int STRIDE = 64; //musi byc >= WIDTH
  55.  
  56.     private static int[] createColors() {
  57.         int[] colors = new int[STRIDE * HEIGHT];
  58.         for(int y = 0; y < HEIGHT; y++){
  59.             for(int x = 0; x < WIDTH; x++){
  60.                 int r = x * 255 / (WIDTH - 1 );
  61.                 int g = y * 255 / (HEIGHT - 1);
  62.                 int b = 255 - Math.min(r, g); //Zwraca mniejszy zestaw wyrażeń liczbowych.
  63.                 int a = Math.max(r, g); //Zwraca większy zestaw dostarczony wyrażeń liczbowych.
  64.                 colors[y * STRIDE + x] = (a << 24) | (r << 16) | (g << 8) | b; //przesunięcia bitowe w lewo
  65.             }
  66.         }
  67.         return colors;
  68.     }
  69.  
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement