色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android自定義圓形進(jìn)度條效果

瀏覽:3日期:2022-09-19 13:16:00

本文實(shí)例為大家分享了Android自定義圓形進(jìn)度條效果的具體代碼,供大家參考,具體內(nèi)容如下

1 控件 RoundProgress

package listview.tianhetbm.p2p.ui;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.BitmapFactory;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 listview.tianhetbm.p2p.R;/** * @date:2015/9/14 * @author:dongxiaogang * @description: 自定義圓形進(jìn)度條 */public class RoundProgress extends View { private Paint paint = new Paint(); private int roundColor; private int roundProgressColor; private int textColor; private float textSize; private float roundWidth; private int max = 100; private int progress = 50; public RoundProgress(Context context) {this(context, null); } public RoundProgress(Context context, AttributeSet attrs) {this(context, attrs, 0); } public RoundProgress(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.RoundProgress);//圓環(huán)的顏色roundColor = ta.getColor(R.styleable.RoundProgress_roundColor, Color.RED);//圓環(huán)進(jìn)度的顏色roundProgressColor = ta.getColor(R.styleable.RoundProgress_roundProgressColor, Color.GREEN);//中間進(jìn)度百分比文字字符串的顏色textColor = ta.getColor(R.styleable.RoundProgress_textColor, Color.GREEN);//中間進(jìn)度百分比的字符串的字體大小textSize = ta.getDimension(R.styleable.RoundProgress_textSize, 15);//圓環(huán)的寬度roundWidth = ta.getDimension(R.styleable.RoundProgress_roundWidth, 5);ta.recycle(); } @Override protected void onDraw(Canvas canvas) {//第一步:繪制一個(gè)最外層的圓paint.setColor(roundColor);paint.setStrokeWidth(roundWidth);paint.setStyle(Paint.Style.STROKE);paint.setAntiAlias(true);int center = getWidth() / 2;int radius = (int) (center - roundWidth / 2-45);//canvas.drawCircle(center, center, radius, paint);RectF oval = new RectF(center - radius, center - radius, center + radius, center + radius);canvas.drawArc(oval, 135, 270, false, paint);//第二步:繪制正中間的文本float textWidth = paint.measureText(progress + '%');paint.setColor(textColor);paint.setTextSize(textSize);paint.setStrokeWidth(0);canvas.drawText(progress + '%', center - textWidth / 2, center + textSize / 2, paint);//第三步:/** * 參數(shù)解釋: * oval:繪制弧形圈所包含的矩形范圍輪廓 * 0:開(kāi)始的角度 * 360 * progress / max:掃描過(guò)的角度 * false:是否包含圓心 * paint:繪制弧形時(shí)候的畫(huà)筆 *///RectF oval = new RectF(center - radius, center - radius, center + radius, center + radius);paint.setColor(roundProgressColor);paint.setStrokeWidth(roundWidth);paint.setStyle(Paint.Style.STROKE);canvas.drawArc(oval, 135, 270 * progress / max, false, paint);Log.e('測(cè)試角度',(270 * progress / max)+'');Paint mp=new Paint();mp.setAntiAlias(true);Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.tiger);int bitmapHeight = bitmap.getHeight()/2;int bitmapWidth = bitmap.getWidth()/2;//canvas.translate(-center, center);float y=0f,x=0f;//if(270 * progress / max<=45){ y = (float) (center-bitmapWidth - (radius) * Math.cos((270 * progress / max+225)*Math.PI/180)); x = (float) (center-bitmapWidth + (radius) * Math.sin((270 * progress / max+225)*Math.PI/180));//} //canvas.translate(center, center*2); Log.e('測(cè)試角度', y + '-----' + x); canvas.drawBitmap(bitmap, x, y, mp); } public void setProgress(int progress){this.progress = progress;if(progress>100){ this.progress = 100;}postInvalidate(); }}2 xml 布局文件

<?xml version='1.0' encoding='utf-8'?><RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' android:layout_width='match_parent' android:layout_height='match_parent' android:gravity='center_horizontal'> <listview.tianhetbm.p2p.ui.RoundProgressandroid:layout_marginTop='30dp'android:layout_width='250dp'android:layout_height='250dp'android:layout_marginLeft='10dp'app:roundColor='@color/back_blue'app:roundProgressColor='@color/back_orange'android: app:roundWidth='10dp'app:textSize='18sp'app:textColor='@color/record_red'/></RelativeLayout>3 activity(主要代碼)

super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_three);ButterKnife.bind(this);new Thread(){ @Override public void run() { while (progress<80){ progress+=1; ce.setProgress(progress); try { Thread.sleep(50); } catch (Exception e) { e.printStackTrace(); } } }}.start();

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 欧美美女色 | 一级作爱视频免费观看 | 亚洲区精选网址 | 久久精品国产亚洲7777小说 | 精品国产一区二区三区久久 | 99视频在线看 | 久久aa毛片免费播放嗯啊 | 蜜桃欧美性大片 | 中文字幕乱码视频32 | 日本三级香港三级乳网址 | 国产精品不卡在线 | 亚洲一级毛片中文字幕 | 亚洲深夜| 久久国产精品免费 | 久久精品国产99久久香蕉 | 日本成人三级 | a级国产乱理伦片在线观看99 | 国产大片在线观看 | 99超级碰碰成人香蕉网 | 久久精品国产99久久香蕉 | 欧美国产精品不卡在线观看 | 91精品国产91 | 一级视频在线免费观看 | 色偷偷成人网免费视频男人的天堂 | 国产日韩欧美另类 | 亚洲国产精品不卡毛片a在线 | 久久这里只有精品免费视频 | 毛片视频在线免费观看 | 成人免费一区二区三区在线观看 | 真人一级毛片国产 | 一级毛片在线完整免费观看 | 亚洲欧洲日韩综合色天使不卡 | 国产成人亚洲综合 | 国产精品日韩欧美一区二区 | 国产精品欧美日韩 | 亚洲国产精品久久久久 | 成人国产三级在线播放 | 久草在线视频首页 | 末成年娇小性色xxxxx | 欧美激情精品久久久久久久九九九 | 日韩欧美中文字幕在线观看 |