• 进度条


    public class MainActivity extends Activity {
    
    	private CircleProgress cp;
    	private ImageView iv;
    	int finish = 80;
    	private int centerX,centerY;
    	private int textSize = 38;
    	private int roundWidth = 14;
    	private float finished =80,unfinished = 20;
    	Paint paint;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.login_activity);
    		cp = (CircleProgress) this.findViewById(R.id.cp_home);
    		iv=(ImageView) this.findViewById(R.id.iv);
    		if(iv == null){
    			Log.v("iv", "null");
    			return;
    		}
    		drawProgress();
    	}
    	
    	public void drawCircle(View view){
    		cp.setProgress(finish,100 - finish);
    		finish--;
    	}
    	
    	private void drawProgress(){
    		Bitmap bitmap1 = null;
    		Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.chart_bg).
    						copy(Bitmap.Config.ARGB_8888, true);
    		bitmap1 = Bitmap.createBitmap(bitmap);
    		centerX = bitmap1.getWidth()/2;
    		centerY = bitmap1.getHeight()/2;
    		Canvas canvas = new Canvas(bitmap1);
    		paint = new Paint();
    		drawText(canvas);
    		drawTaskFinish(canvas);
    		drawTaskUnfinish(canvas);
    		iv.setImageBitmap(bitmap1);
    	}
    	private void drawText(Canvas canvas){
    		//半径
    		int radius = (int)(centerX - roundWidth/2);
    		paint.setColor(Color.parseColor("#3061AE"));
    		paint.setStrokeWidth(0); 
    		paint.setTextSize(textSize);
    		paint.setTypeface(Typeface.DEFAULT_BOLD); //设置字体
    		int percent = (int)((finished / (finished + unfinished)) * 100);
    		float textWidth = paint.measureText(percent + "%");
    		canvas.drawText(percent + "%", centerX - textWidth / 2, centerY + textSize/3, paint);
    		
    		paint.setStrokeWidth(roundWidth); //设置圆环的宽度
    		paint.setColor(Color.parseColor("#FF721A"));  //设置进度的颜色
    		paint.setStyle(Style.STROKE);
    		RectF oval = new RectF(centerX - radius, centerY - radius, centerX
    				+ radius, centerY + radius);
    		if(percent >0){
    			//根据进度画圆弧,同时改变起始角度,进行绘制
    			canvas.drawArc(oval, -90, 360 * percent/100, false, paint); 
    		}
    	}
    	/**
    	 * 绘制完成任务的形状
    	 * @param canvas
    	 */
    	private void drawTaskFinish(Canvas canvas){
    		if(finished <=0){
    			return;
    		}
    		int centerFinishX = (int) (centerX + centerX * 0.6);
    		paint.setColor(Color.parseColor("#FF721A"));
    		paint.setStyle(Paint.Style.FILL_AND_STROKE);
    		canvas.drawCircle(centerFinishX, centerFinishX, 20, paint);
    		
    		paint.setColor(Color.WHITE);
    		paint.setStrokeWidth(0); 
    		paint.setTextSize(12);
    		paint.setTypeface(Typeface.DEFAULT_BOLD);
    		float textWidth = paint.measureText(finished + "万");
    		canvas.drawText(finished + "万", centerFinishX - textWidth / 2,
    						centerFinishX + 6, paint);
    	}
    	
    	/**
    	 * 绘制未完成的任务图形
    	 * @param canvas
    	 */
    	private void drawTaskUnfinish(Canvas canvas){
    		if(unfinished <=0){
    			return;
    		}
    		int centerUnfinishX = (int) (centerX - centerX * 0.6);
    		paint.setColor(Color.parseColor("#1FC2F3"));
    		paint.setStyle(Paint.Style.FILL_AND_STROKE);
    		canvas.drawCircle(centerUnfinishX, centerUnfinishX, 20, paint);
    		
    		paint.setColor(Color.WHITE);
    		paint.setStrokeWidth(0); 
    		paint.setTextSize(12);
    		paint.setTypeface(Typeface.DEFAULT_BOLD);
    		float textWidth = paint.measureText(unfinished + "万");
    		canvas.drawText(unfinished + "万", centerUnfinishX - textWidth / 2,
    						centerUnfinishX + 6, paint);
    	}
    	
    }
    
  • 相关阅读:
    frameset框架中frame页面间传递参数
    程序中呼叫Class(类)
    ASP.NET简化编辑界面 V2
    ASP.NET简化编辑界面
    DropDownList与TextBox互动
    首先判断是否有选择记录,再confirm用户确认删除
    Div Vertical Menu ver2
    Div Vertical Menu
    为文本框指定一个默认值
    轻量级更换类(Class)
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4513070.html
Copyright © 2020-2023  润新知