【Android】在SurfaceView上显示透明图片

package com.example.hrant95.bearmeniandemo;

import android.content.Context;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Display;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.graphics.*;

public class MainActivity extends AppCompatActivity {

    private Bitmap mBitmap;
    private Bitmap mBackgroundImageBitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyView myView = new MyView(this);
        setContentView(myView);
        Thread thread = new Thread(myView);
        thread.run();

        mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
        mBackgroundImageBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.girl);

    }

    private class MyView extends SurfaceView implements Runnable {

        public MyView(Context context) {
            super(context);
        }

        @Override
        public void run() {

            SurfaceHolder holder = getHolder();

            holder.addCallback(new SurfaceHolder.Callback() {
                @Override
                public void surfaceCreated(SurfaceHolder holder) {

                    Display display = getWindowManager().getDefaultDisplay();

                    int displayWidth = display.getWidth();
                    int displayHeight = display.getHeight();
                    int bitmapWidth = mBitmap.getWidth();
                    int bitmapHeight = mBitmap.getHeight();

                    int columnsCount = displayWidth / bitmapWidth;
                    int rowsCount = displayHeight / bitmapHeight;
                    int columnPadding = displayWidth - (columnsCount * bitmapWidth);
                    int itemRightPadding = columnPadding / columnsCount;

                    int rowPadding = displayHeight - (rowsCount * bitmapHeight);
                    int itemBottomPadding = rowPadding / rowsCount;

                    int left = itemRightPadding;
                    int top = itemBottomPadding;

                    Canvas canvas = holder.lockCanvas();
                    canvas.drawBitmap(mBackgroundImageBitmap, 0, 0, null);

                    for (int i = 0; i < rowsCount - 1 /* -1 vorovhetev actionbary xangaruma*/; i++) {
                        for (int j = 0; j < columnsCount; j++) {
                            canvas.drawBitmap(mBitmap, left, top, null);
                            left += bitmapWidth + itemRightPadding;
                        }
                        left = 0;
                        top += bitmapHeight + itemBottomPadding;
                    }

                    holder.unlockCanvasAndPost(canvas);

                }

                @Override
                public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

                }

                @Override
                public void surfaceDestroyed(SurfaceHolder holder) {

                }
            });

        }
    }


}

Taily老段的微信公众号,欢迎交流学习

https://blog.csdn.net/taily_duan/article/details/81214815


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值