zoukankan      html  css  js  c++  java
  • Canvas绘制QQ图标(demo)

    这里写图片描述
    MainActivity.java

    package com.jsjrjsb1504.sdut.gesture;
    
    import android.content.Context;
    import android.graphics.*;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.*;
    
    public class Main2Activity extends AppCompatActivity {
    
        float rationpieceOfWidth = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            FrameLayout mFrameLayout = findViewById(R.id.framelayout);
            //将当前的布局和内部类相关联
            mFrameLayout.addView(new Myview(this));
        }
    
        //内部类用于绘画
        public class Myview extends View {
    
            public Myview(Context context) {
    
                super(context);
            }
    
            @Override
            protected void onDraw(Canvas canvas) {
                rationpieceOfWidth = canvas.getWidth();
                super.onDraw(canvas);
                //创建一支画笔
                Paint paint = new Paint();
                paint.setColor(Color.BLACK);
                paint.setAntiAlias(true);
                //设置画笔粗细
                paint.setStrokeWidth(2);
                //设置是否为空心
                paint.setStyle(Paint.Style.FILL_AND_STROKE);
    
                //脚丫
                paint.setColor(Color.argb(255, 180, 130, 34));
                RectF mRectF_leg = new RectF(
                        rationpieceOfWidth / 8 + rationpieceOfWidth / 20,
                        rationpieceOfWidth - rationpieceOfWidth / 10,
                        rationpieceOfWidth / 2 - rationpieceOfWidth / 20,
                        rationpieceOfWidth + rationpieceOfWidth / 20);
                canvas.drawOval(mRectF_leg, paint);
                mRectF_leg.offset(rationpieceOfWidth * 3 / 8, 0);
                canvas.drawOval(mRectF_leg, paint);
    
    //            //绘制肚子
                paint.setColor(Color.BLACK);
                RectF mRectF_belly = new RectF(
                        rationpieceOfWidth * 3 / 24,
                        rationpieceOfWidth / 3,
                        rationpieceOfWidth * 9 / 12 + rationpieceOfWidth * 3 / 24,
                        rationpieceOfWidth);
                canvas.drawOval(mRectF_belly, paint);
    
    
                //绘制头部
                paint.setColor(Color.BLACK);
                RectF mRectF_head = new RectF(rationpieceOfWidth / 6,
                        rationpieceOfWidth / 8,
                        rationpieceOfWidth / 6 + rationpieceOfWidth * 2 / 3,
                        rationpieceOfWidth * 5 / 6);
    
                canvas.drawOval(mRectF_head, paint);
                //   canvas.drawArc(mRectF_head, 150, 250, true, paint); //顺时针旋转
    
                paint.setColor(Color.WHITE);
                //胳膊
    
                paint.setColor(Color.WHITE);
                RectF eyes = new RectF(rationpieceOfWidth * 37 / 96,
                        rationpieceOfWidth / 4,
                        rationpieceOfWidth * 45 / 96, rationpieceOfWidth / 4 + rationpieceOfWidth / 10);
                canvas.drawOval(eyes, paint);
                eyes.offset(rationpieceOfWidth / 6, 0);
                canvas.drawOval(eyes, paint);
    
                paint.setColor(Color.BLACK);
                RectF mRectF_eyes = new RectF(
                        rationpieceOfWidth * 37 / 96 + rationpieceOfWidth / 25,
                        rationpieceOfWidth / 4 + rationpieceOfWidth / 30,
                        rationpieceOfWidth * 37 / 96 + rationpieceOfWidth / 13,
                        rationpieceOfWidth / 4 + rationpieceOfWidth / 12);
                canvas.drawOval(mRectF_eyes, paint);
                mRectF_eyes.offset(rationpieceOfWidth / 6, 0);
                RectF mRectF_rightEyes = new RectF(mRectF_eyes);
    
                mRectF_rightEyes.set(mRectF_eyes.left - rationpieceOfWidth / 50, mRectF_eyes.top, mRectF_eyes.right - rationpieceOfWidth / 50, mRectF_eyes.bottom);
    
    
                canvas.drawArc(mRectF_rightEyes, 120, 300, true, paint); //顺时针旋转
    
    
                //嘴巴
                paint.setColor(Color.argb(255, 180, 130, 34));
                RectF mRectF_mouth = new RectF(
                        rationpieceOfWidth / 3,
                        rationpieceOfWidth / 2 - rationpieceOfWidth / 10,
                        rationpieceOfWidth / 2 + rationpieceOfWidth / 6,
                        rationpieceOfWidth / 2);
                canvas.drawOval(mRectF_mouth, paint);
    
    
    
                //肚皮
                paint.setColor(Color.WHITE);
                RectF mRectF_abdomen = new RectF(
                        rationpieceOfWidth * 5 / 24,
                        rationpieceOfWidth * 7 / 12,
                        rationpieceOfWidth * 7 / 12 + rationpieceOfWidth * 5 / 24,
                        rationpieceOfWidth - rationpieceOfWidth / 20
                );
                canvas.drawOval(mRectF_abdomen, paint);
    
    
                //围脖
                RectF mRectF_neck = new RectF();
    
    
                //胳膊
                canvas.save();
                paint = new Paint(Color.BLACK);
                canvas.translate(rationpieceOfWidth * 7 / 8, rationpieceOfWidth / 2);
                RectF mRectF_rightArm = new RectF();
                mRectF_rightArm.set(0, 0,
                        rationpieceOfWidth / 2 - rationpieceOfWidth / 6,
                        rationpieceOfWidth / 10);
                canvas.rotate(60);
                canvas.drawOval(mRectF_rightArm, paint);
                canvas.restore();
    
                canvas.save();
    
                paint.setColor(Color.BLACK);
                canvas.translate(rationpieceOfWidth / 8+rationpieceOfWidth/10, rationpieceOfWidth / 2+rationpieceOfWidth/20); //回到最开始的左上角
              //  mRectF_rightArm.offset(-rationpieceOfWidth*3/2/4, (float) (rationpieceOfWidth*3/2/4*Math.sqrt(3)));
                canvas.rotate(120);
                canvas.drawOval(mRectF_rightArm, paint);
    
    
    
    
    
              //  canvas.translate(rationpieceOfWidth, rationpieceOfWidth / 2);
    //            RectF mRectF_arm = new RectF(rationpieceOfWidth / 2, 0,
    //                    rationpieceOfWidth / 2 - rationpieceOfWidth / 6,
    //                    rationpieceOfWidth / 10);
    //
    //            mRectF_arm.set(mRectF_arm.right - rationpieceOfWidth / 4, mRectF_arm.top, mRectF_arm.right, mRectF_arm.bottom);
    //            canvas.drawOval(mRectF_arm, paint);
                canvas.restore();
    
    
    
            }
        }
    
    }
    
    
  • 相关阅读:
    chapter16 计算机体系结构基础
    ASP.NET 2.0加密Web.config 配置文件
    用IIS6.0的Kernel Caching 压缩技术提高应用程序性能
    .net中怎样执行一个字符串
    ASP.NET 页面生存周期中的关键事件
    ASP.NET获取客户端IP及MAC地址
    DOS命令关闭计算机
    1个式子检测密码强度
    徐州话六级考试
    .net2.0中新增的Substitution控件
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781732.html
Copyright © 2011-2022 走看看