Hirdetés

Új hozzászólás Aktív témák

  • domel

    tag

    Egy kis érdekesség karácsonyra.
    MatrixEffect.java
    package hun.domel.maxrict;

    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;

    import java.util.Random;

    public class MatrixEffect extends View {

    private static final Random RANDOM = new Random();
    private int width, height;
    private Canvas canvas;
    private Bitmap canvasBmp;
    private int fontSize = 35;
    private int columnSize;
    private char[] cars = "+-*/!^'([])#@&?,=$€°|%".toCharArray();
    private int[] txtPosByColumn;
    private Paint paintTxt, paintBg, paintBgBmp, paintInitBg;

    public MatrixEffect(Context context, AttributeSet attrs) {
    super(context, attrs);
    paintTxt = new Paint();
    paintTxt.setStyle(Paint.Style.FILL);
    paintTxt.setColor(Color.GREEN);
    paintTxt.setTextSize(fontSize);

    paintBg = new Paint();
    paintBg.setColor(Color.BLACK);
    paintBg.setAlpha(5);
    paintBg.setStyle(Paint.Style.FILL);

    paintBgBmp = new Paint();
    paintBgBmp.setColor(Color.BLACK);

    paintInitBg = new Paint();
    paintInitBg.setColor(Color.BLACK);
    paintInitBg.setAlpha(255);
    paintInitBg.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    width = w;
    height = h;
    canvasBmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    canvas = new Canvas(canvasBmp);
    canvas.drawRect(0, 0, width, height, paintInitBg);
    columnSize = width / fontSize;
    txtPosByColumn = new int[columnSize + 1];
    for (int x = 0; x < columnSize; x++) {
    txtPosByColumn[x] = RANDOM.nextInt(height / 2) + 1;
    }
    }

    private void drawText() {
    for (int i = 0; i < txtPosByColumn.length; i++) {
    canvas.drawText("" + cars[RANDOM.nextInt(cars.length)], i * fontSize, txtPosByColumn[i] * fontSize, paintTxt);
    if (txtPosByColumn[i] * fontSize > height && Math.random() > 0.975) {
    txtPosByColumn[i] = 0;
    }
    txtPosByColumn[i]++;
    }
    }

    private void drawCanvas() {
    canvas.drawRect(0, 0, width, height, paintBg);
    drawText();
    }

    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawBitmap(canvasBmp, 0, 0, paintBgBmp);
    drawCanvas();
    invalidate();
    }
    }

    activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <hun.domel.maxrict.MatrixEffect
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

    <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="128dp"
    android:layout_marginTop="160dp"
    android:text="Button"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


    </androidx.constraintlayout.widget.ConstraintLayout>

    A package name-t mindkét helyen javítsd a sajátodra, a MainActivity.java-hoz nem kell nyúlni

Új hozzászólás Aktív témák