美文网首页
Android - 绘画出圆并保存为图片

Android - 绘画出圆并保存为图片

作者: 杰奎琳子 | 来源:发表于2020-07-17 08:05 被阅读0次

    效果图

    在相应路径下,生成1.png的照片

    1. 添加权限

    保存图片需要添加读写权限

    Android 6.0 - 申请动态权限

    2. 新建MyView类并继承View

    public class MyView extends View {

        public MyView(Context context) {

            super(context);

        }

        @Override

        protected void onDraw(Canvas canvas) {

            super.onDraw(canvas);

            Paint paint = new Paint();

            /*

            * Paint.Style.FILL设置只绘制图形内容

            * Paint.Style.STROKE设置只绘制图形的边

            * Paint.Style.FILL_AND_STROKE设置都绘制

            * */

            paint.setStyle(Paint.Style.FILL);

            paint.setColor(Color.BLACK); //设置画笔颜色为:黑色

            //paint.setStyle(Paint.Style.STROKE); //空心效果

            //paint.setStrokeWidth((float) 3.0); //线宽

            //paint.setAntiAlias(true); //设置抗锯齿

            //paint.setStrokeWidth(7); //设置笔触宽度

            /*

            * public static Bitmap createBitmap(int width, int height, Config config)

            * 参数一:宽

            * 参数一:高

            * 参数三: 图片格式

            *          Bitmap.Config :https://blog.csdn.net/dalancon/article/details/7851143?utm_source=blogxgwz6

            * */

            Bitmap bitmap = Bitmap.createBitmap(700,700, Bitmap.Config.ARGB_8888);

            //将图片指定区域,画到canvas的指定区域 (paint:一般填null)

            //drawBitmap :https://blog.csdn.net/lovexieyuan520/article/details/50725539

            canvas.drawBitmap(bitmap, 0, 0, null);

            /*

            * Canvas构造函数需要传入一个Bitmap,该bitmap是我们对canvas进行操作的载体,

            * 比如:调用canvas的drawLine方法画一条线,将会把线画到bitmap里去。

            * Canvas直接对该Bitmap对象进行修改,Bitmap保存我们的操作。

            * */

            canvas = new Canvas(bitmap);

            canvas.drawColor(Color.WHITE); //设置为白色背景

            /*

            * public void drawCircle(float cx, float cy, float radius,Paint paint)

            * 参数一:圆心的x坐标

            * 参数二:圆心的y坐标

            * 参数三:圆的半径

            * 参数四:绘制时所使用的画笔

            * */

            canvas.drawCircle(150,150,100,paint); //绘制黑色圆

            canvas.save(); //保存

            canvas.restore(); // 存储

            //存储地址

            File file = new File("/storage/emulated/0/1/");

            if(!file.exists()){

                //如果不存在:根据File里的路径名建立文件夹

                file.mkdirs();

            }else {

                try {

                    FileOutputStream fos = new FileOutputStream(file.getPath() + "/1.png");

                    //压缩图片 为百分之30

                    bitmap.compress(Bitmap.CompressFormat.PNG, 30, fos);

                    //清空缓冲区数据

                    fos.flush();

                    //关闭流

                    fos.close();

                    System.out.println("-------------save true------------");

                } catch (Exception e) {

                    e.printStackTrace();

                    System.out.println("-------------save flase------------");

                }

            }

        }

    }

    3. MainActivity.java

    @Override

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            myView = new MyView(this);

            FrameLayout frameLayout = findViewById(R.id.forever);

            frameLayout.addView(myView);

        }

    ----------------布局(activity_main.xml)---------------

    <FrameLayout

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:id="@+id/forever"/>

    相关文章

      网友评论

          本文标题:Android - 绘画出圆并保存为图片

          本文链接:https://www.haomeiwen.com/subject/demxhktx.html