效果图

Android - 绘画出圆并保存为图片(详)_第1张图片
Android - 绘画出圆并保存为图片(详)_第2张图片
  • 在相应路径下,生成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"/>

更多相关文章

  1. Android上传图片到服务器,android-async-http上传图片到服务器
  2. Android jni中数组参数的传递方式
  3. Android中改变一个图片的透明度
  4. android 背景图片设置
  5. 关于android中的EditView,TextView的图片问题
  6. 阅读《Android 从入门到精通》(7)——图片按钮
  7. Android 分享文本和图片
  8. Android 访问Webservice接口,参数对象不能串行化问题解决(java.lan
  9. android从sdcard加载.9.png图片

随机推荐

  1. android多线程读取网页内容
  2. robotium自动化测试应主意点
  3. Android仿Iphone图标抖动效果
  4. Android(安卓)3.2 应用程序联机(devices)测
  5. FFmepg编译及CMake 集成到 Android
  6. Android(安卓)开发: eclipse更新SDK,eclips
  7. Android(安卓)NDK 开发中 adb logcat 命
  8. android Spinner setSelection无效 总显
  9. 安装谷歌服务框架
  10. Android(基于imx53开发板)修改内核支持HD