博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
画画板小案例
阅读量:6324 次
发布时间:2019-06-22

本文共 3027 字,大约阅读时间需要 10 分钟。

画画板小案例

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Paint paint;    private Bitmap bitmapC;    @SuppressLint("ClickableViewAccessibility")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button changC = findViewById(R.id.changeColor);        changC.setOnClickListener(this);        Button bold = findViewById(R.id.bold);        bold.setOnClickListener(this);        Button save = findViewById(R.id.save);        save.setOnClickListener(this);        final ImageView iv = findViewById(R.id.iv);        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.bg);        bitmapC = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());        paint = new Paint();        final Canvas canvas = new Canvas(bitmapC);        canvas.drawBitmap(bitmap, new Matrix(), paint);        iv.setImageBitmap(bitmapC);        iv.setOnTouchListener(new View.OnTouchListener() {            float startX = 0;            float startY = 0;            @Override            public boolean onTouch(View v, MotionEvent event) {                int action = event.getAction();                switch (action) {                    case MotionEvent.ACTION_DOWN:                        startX = event.getX();                        startY = event.getY();                        break;                    case MotionEvent.ACTION_UP:                        break;                    case MotionEvent.ACTION_MOVE:                        float stopX = event.getX();                        float stopY = event.getY();                        canvas.drawLine(startX, startY, stopX, stopY, paint);                        iv.setImageBitmap(bitmapC);                        startX = stopX;                        startY = stopY;                        break;                }                return true;            }        });    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.changeColor:                paint.setColor(Color.RED);                break;            case R.id.bold:                paint.setStrokeWidth(20f);                break;            case R.id.save:                try {                    File file = new File(getFilesDir().getParent(), "dazuo.png");                    FileOutputStream fos = new FileOutputStream(file);                    boolean compress = bitmapC.compress(Bitmap.CompressFormat.PNG, 100, fos);                    if (compress) {                        Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();                    }                } catch (FileNotFoundException e) {                    Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();                    e.printStackTrace();                }                break;        }    }}

代码已上传https://gitee.com/nangongyibin/Android_DrawingVersion

转载于:https://www.cnblogs.com/nangongyibin/p/10252645.html

你可能感兴趣的文章
好吧 我还没有写博客的习惯。
查看>>
反转链表的golang实现
查看>>
mysql使用基础 sql语句(一)
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第9周学习总结
查看>>
CentOS 6.5下mysql的安装与配置
查看>>
python利用正则表达式提取字符串
查看>>
【资源共享】《DDR常见问题简单排查》
查看>>
Maven使用中央仓库下载慢的解决办法
查看>>
vc 使用SetWindowPos改变窗体的大小,实现折叠,展开
查看>>
关于windows修改远程登录端口的问题
查看>>
安装CocoaPods学习
查看>>
async 常用函数总结
查看>>
过渡函数transition-timing-function
查看>>
http与websocket(基于SignalR)两种协议下的跨域基于ASP.NET MVC--竹子整理
查看>>
Linux查找命令
查看>>
kubernetes系列08—service资源详解
查看>>
java去除表达符号的正则表达式
查看>>
ORM版,学生信息管理单表查询..
查看>>
mongoexport 导出需要授权数据库中的集合 报错 Authentication failed.
查看>>
转:备忘---PHP 5.5 新特性
查看>>