自定义View(环形下载,球形下载)

来源:互联网 发布:ajax接收不到json数据 编辑:程序博客网 时间:2024/06/06 04:22

效果图:

这里写图片描述

代码:

这里的layout就不写了,注意view要写全称,包名类名都要写

环形下载:

MyArc

package com.example.administrator.mywidgetmode.Progress;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.util.Log;import android.view.View;import java.text.SimpleDateFormat;import java.util.Date;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Align;import android.graphics.Paint.Style;import android.graphics.Rect;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/** * Created by Administrator on 2015/9/16. */public class MyArc extends View {    private int width;    private int height;    private int currentProgress;    private Paint mPaintBackGround;    private Paint mPaintCurrent;    private Paint mPaintText;    private int maxProgress=100;    //得到进度的最大值    public int getMaxProgress() {        return maxProgress;    }    //设置进度的最大值    public void setMaxProgress(int maxProgress) {        this.maxProgress = maxProgress;    }    //得到当前的进度值    public int getCurrentProgress(){        return currentProgress;    }    //设置当前的进度值    public void setCurrentProgress(int currentProgress){        this.currentProgress=currentProgress;        invalidate();//刷新    }    public MyArc(Context context) {        super(context);    }    public MyArc(Context context, AttributeSet attrs) {        super(context, attrs);        mPaintBackGround=new Paint();        mPaintBackGround.setColor(Color.CYAN);        mPaintBackGround.setAntiAlias(true);//消除锯齿        mPaintCurrent=new Paint();        mPaintCurrent.setColor(Color.GREEN);        mPaintCurrent.setAntiAlias(true);        mPaintCurrent.setStyle(Paint.Style.STROKE);        mPaintCurrent.setStrokeWidth(20);        mPaintText=new Paint();        mPaintText.setColor(Color.BLACK);        mPaintText.setTextSize(40);        mPaintText.setTextAlign(Paint.Align.CENTER);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        width=getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec);        height=getDefaultSize(getSuggestedMinimumHeight(),heightMeasureSpec);        setMeasuredDimension(width,height);//设置画布的大小,长和宽    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawColor(Color.GRAY);//设置画布颜色        RectF oval=new RectF(); //RectF对象        oval.left=width/4; //左边        oval.top=width/4; //上边        oval.right=width/4*3; //右边        oval.bottom=width/4*3; //下边        canvas.drawArc(oval,225, 360*currentProgress/maxProgress,false,mPaintCurrent);        canvas.drawText(currentProgress+"%",width/2,width/2,mPaintText);    }}

MyArcActivity

package com.example.administrator.mywidgetmode.Progress;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.example.administrator.mywidgetmode.R;/** * Created by Administrator on 2015/9/16. */public class MyArcActivity extends AppCompatActivity{    private MyArc myArc;    private static final int PROGRESS=0x23;    private Button mBtStart;    private int progress;    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case PROGRESS:                    progress++;                    if(progress<=100){                        myArc.setCurrentProgress(progress);                        handler.sendEmptyMessageDelayed(PROGRESS,200);                    }                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_arc);        myArc= (MyArc) findViewById(R.id.arc);        mBtStart= (Button) findViewById(R.id.button_arc_download);        mBtStart.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                handler.sendEmptyMessageDelayed(PROGRESS, 1000);            }        });    }}

球形下载:

MyPathViewTwo

package com.example.administrator.mywidgetmode.PathView;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.View;/** * Created by Administrator on 2015/9/18. */public class MyPathViewTwo extends View {    private int width;    private int height;    private Paint mPaintText;    private Paint mPaint;    private Paint mPaintPoint;    private Path path;    private int currentProgress;    private int maxProgress = 100;    private int count=0;    private boolean isAdd=false;    private int size;    public static final int NEED_INVALIDATE=0X23;    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case NEED_INVALIDATE:                    count+=5;                    if(count>80){                        count=0;                    }                    invalidate();//告诉主线程重新绘制                    handler.sendEmptyMessageDelayed(NEED_INVALIDATE,100);                    break;            }        }    };    public int getCurrentProgress() {        return currentProgress;    }    public void setCurrentProgress(int currentProgress) {        this.currentProgress = currentProgress;    }    public MyPathViewTwo(Context context) {        super(context);    }    public MyPathViewTwo(Context context, AttributeSet attrs) {        super(context, attrs);        path = new Path();//路径        //文字画笔        mPaintText = new Paint();        mPaintText.setAntiAlias(true);//消除锯齿        mPaintText.setColor(Color.BLACK);        mPaintText.setTextSize(50);        mPaintText.setTextAlign(Paint.Align.CENTER);        mPaint=new Paint();        mPaint.setColor(Color.RED);//下半部分        mPaint.setStyle(Paint.Style.FILL);        mPaint.setTextSize(50);        mPaint.setAntiAlias(true);        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));        mPaintPoint=new Paint();        mPaintPoint.setColor(Color.argb(0xFF,0xF8,0xA6,0xA6));//上半部分        mPaintPoint.setStrokeWidth(10);        mPaintPoint.setStyle(Paint.Style.FILL);        handler.sendEmptyMessage(NEED_INVALIDATE);    }   private Bitmap mBitmapBubble;    private Canvas mCanvasBit;    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);        height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);        setMeasuredDimension(width, height);//设置画布的大小,长和宽        mBitmapBubble=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);        mCanvasBit=new Canvas(mBitmapBubble);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        mCanvasBit.drawCircle(300,300,150,mPaintPoint);//圆        path.reset();//刷新        path.moveTo(500,450-currentProgress*3);        path.lineTo(500,500);        path.lineTo(count,500);        path.lineTo(count,450-currentProgress*3);        for(int i=0;i<10;i++){            path.rQuadTo(20,7,40,0);            path.rQuadTo(20,-7,40,0);        }        path.close();        mCanvasBit.drawPath(path, mPaint);        canvas.drawBitmap(mBitmapBubble, 0, 0, null);        canvas.drawText(currentProgress + "%", 300, 300, mPaintText);    }}

MyPathViewTwoActivity

package com.example.administrator.mywidgetmode.PathView;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.example.administrator.mywidgetmode.Progress.MyRectangle;import com.example.administrator.mywidgetmode.R;/** * Created by Administrator on 2015/9/18. */public class MyPathViewTwoActivity extends AppCompatActivity {    private MyPathViewTwo myPathViewTwo;    private static final int PROGRESS=0x23;    private Button mBtStart;    private int progress;    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case PROGRESS:                    progress++;                    if(progress<=100){                        myPathViewTwo.setCurrentProgress(progress);                        handler.sendEmptyMessageDelayed(PROGRESS,200);                    }                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_pathview_two);        myPathViewTwo= (MyPathViewTwo) findViewById(R.id.myPathViewTwo);        mBtStart= (Button) findViewById(R.id.button_myPathViewTwo);        mBtStart.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                handler.sendEmptyMessageDelayed(PROGRESS,1000);            }        });    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为畅享5s太卡怎么办 金立手机导航gps信号弱怎么办 贴了膜后边缘有气泡怎么办 魅族mx5刷机失败然后黑屏怎么办 魅族手机无线网玩王者卡怎么办 魅族手机玩王者荣耀卡怎么办 魅族手机导航gps信号弱怎么办 魅族手机4g信号差怎么办 魅族手机下面一排键失灵怎么办 魅族手机冲不进去电怎么办 苹果账号付款了又让付款怎么办 魅蓝3s开机定屏怎么办 魅族手机未找到固件怎么办不用电脑 魅族手机触屏局部失灵怎么办 更新了魅蓝的新系统掉帧怎么办 手机后盖摔了一下凹了一个洞怎么办 魅族手机充电需要重启怎么办 网上预约好了但就诊卡丢了怎么办 如果魅族手机锁屏密码忘记了怎么办 魅族手机应用加密忘记密码了怎么办 小米电视盒子3s死机黑屏怎么办 小米note充电充不进去电怎么办 乐视手机otg功能用不了怎么办 小米4c手机玩王者荣耀卡怎么办 捡的小米6被锁了怎么办 小米5s手机玩穿越火线卡怎么办 苹果平板更新完系统登录不上怎么办 谷歌商店一直卡在核对信息怎么办 贴吧邮箱忘了无法登陆怎么办 华为手机绑定了账号忘了怎么办 淘宝的手机多次注册无法登录怎么办 电脑看不到U盘里面的文件怎么办 c盘访问权限被锁了怎么办 xp系统电脑开机密码忘记了怎么办 华为荣耀9用久了卡怎么办 华为p9相机模糊敲打就正常怎么办 华为p9蓝频按什么都没反映怎么办 华为手机p9开机密码忘了怎么办 华为P9手机开机一直闪屏怎么办 荣耀畅玩7x用户数据锁定怎么办 华为手机p9的指纹解锁坏了怎么办