日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

android實(shí)現(xiàn)簡(jiǎn)單圓弧效果

瀏覽:188日期:2022-09-23 08:28:40

最近項(xiàng)目完成就開(kāi)始搞一些有用沒(méi)用的東西,以前面試的時(shí)候有人問(wèn)我那種圓弧效果怎么做,還問(wèn)我翻牌效果,我只看過(guò),沒(méi)有做過(guò),現(xiàn)在有空了,而且想到可能會(huì)用到就做個(gè)簡(jiǎn)單的圓弧很簡(jiǎn)單,自定義個(gè)View,創(chuàng)建個(gè)Paint,設(shè)置 arcPaint.setStyle(Paint.Style.STROKE)再設(shè)置圓弧的寬,再在onDraw內(nèi)調(diào)用canvas.drawArc()就好了現(xiàn)在只做一個(gè)帶刻度的圓弧和一個(gè)開(kāi)口地方是圓角的圓弧。其他各種效果以后再摸索

android實(shí)現(xiàn)簡(jiǎn)單圓弧效果

ArcView.java

public class ArcView extends View { private Paint textPaint; private Paint arcPaint; private Shader backGradient; private Xfermode xfermode; private RectF oval = new RectF(); public ArcView(Context context) { super(context); init(); } public ArcView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } private int type = 0; public void setType(int type) { this.type = type; if(type == 1){ start = 10; } } private void init(){ arcPaint = new Paint(); arcPaint.setAntiAlias(true); if(type == 0){ xfermode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR); } textPaint = new Paint(); textPaint.setAntiAlias(true); textPaint.setColor(Color.WHITE); textPaint.setTextSize(50); textPaint.setStyle(Paint.Style.FILL); textPaint.setTextAlign(Paint.Align.CENTER); } private int strokeWidth = 40; public void setStrokeWidth(int strokeWidth) { this.strokeWidth = strokeWidth; } private int max = 100; public void setMax(int max) { this.max = max; } private int progress; public void setProgress(int progress) { this.progress = progress; postInvalidate(); } private int start = 0; public void setStart(int start) { if(type == 1){ if(start < 10){start = 10; } }else{ if(start < 0){start = 0; } } this.start = start; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(getWidth() != 0){ int width = getWidth(); int height = getHeight(); int cx = width/2; int cy = height/2; if(backGradient == null){oval.set( strokeWidth/2, strokeWidth/2, width - strokeWidth/2, height - strokeWidth/2);int colorStart = getResources().getColor(R.color.colorPrimary);int color2 = Color.GREEN;int colorEnd = Color.RED; backGradient = new SweepGradient(cx,cy,new int[]{color2 ,colorStart, colorEnd},new float[]{0.1f,0.4f,0.9f}); postInvalidate(); }else{int sc = 0;if(type == 0){ sc = canvas.saveLayer(0, 0, canvas.getWidth(), canvas.getHeight(), null, Canvas.ALL_SAVE_FLAG);}else{ canvas.save();} canvas.rotate(90,cx,cy);arcPaint.setColor(Color.GRAY);arcPaint.setStyle(Paint.Style.STROKE);arcPaint.setStrokeWidth(strokeWidth);if(type == 1){ arcPaint.setStrokeCap(Paint.Cap.ROUND);} int s =start;int e = start*2;//底色canvas.drawArc(oval,s,360 - e,false,arcPaint);arcPaint.setShader(backGradient);//漸變int sweep = (int) (progress*1.0f/max*(360 - e));canvas.drawArc(oval,s,sweep,false,arcPaint); arcPaint.setShader(null); if(type == 0){ //刻度 arcPaint.setXfermode(xfermode); arcPaint.setStyle(Paint.Style.STROKE); arcPaint.setStrokeWidth(5); for (int i = 0; i < 36;i++){ canvas.drawLine(0,cy,getWidth(),cy,arcPaint); canvas.rotate(5,cx,cy); } arcPaint.setXfermode(null); canvas.restoreToCount(sc);}else{ canvas.restore();} Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();float top = fontMetrics.top;float bottom = fontMetrics.bottom;int baseLineY = (int) (cy - top/2 - bottom/2);canvas.drawText(progress+'%',cx,baseLineY,textPaint); //十字線,用來(lái)參考的,可刪除canvas.drawLine(cx,0,cx,height,textPaint);canvas.drawLine(0,cy,width,cy,textPaint); } } }}

activity_main.xml

<?xml version='1.0' encoding='utf-8'?><android.support.constraint.ConstraintLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' tools:context='com.hyq.hm.testdraw.MainActivity'> <LinearLayout android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical' android:gravity='center_horizontal'> <SeekBar android: android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_margin='20dp' android:max='100'/> <LinearLayout android:layout_width='wrap_content' android:layout_height='wrap_content' android:orientation='horizontal'> <com.hyq.hm.testdraw.ArcViewandroid: android:layout_width='100dp'android:layout_height='100dp'android:layout_margin='5dp'android:background='#885453'/> <com.hyq.hm.testdraw.ArcViewandroid: android:layout_width='100dp'android:layout_height='100dp'android:layout_margin='5dp'/> </LinearLayout> </LinearLayout> </android.support.constraint.ConstraintLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity { private SeekBar seekBar; private ArcView arcView0; private ArcView arcView1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); arcView0 = findViewById(R.id.arc_view_0); arcView1 = findViewById(R.id.arc_view_1); arcView0.setType(0); arcView1.setType(1); arcView0.setStart(10); arcView1.setStart(0); seekBar = findViewById(R.id.seek_bar); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {arcView0.setProgress(progress);arcView1.setProgress(progress); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); }}

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

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美国产另类| 国产精品第一| 欧美亚洲精品在线| 在线视频精品| 中文日韩在线| 亚洲免费毛片| 中文字幕高清在线播放| 国产一区二区三区91| 国产精品自拍区| 日韩视频久久| 国产精品天天看天天狠| 国内在线观看一区二区三区 | 婷婷成人av| 国产精品一区二区精品视频观看 | 伊人久久亚洲影院| 亚洲欧美网站| 国产情侣久久| 国产精品88久久久久久| 亚洲+小说+欧美+激情+另类| 久久精品国产99国产| 亚洲婷婷在线| 国产视频一区二| 亚洲欧美综合| 麻豆精品在线视频| 亚洲欧美日韩一区在线观看| 国产精品久久亚洲不卡| 久久人人88| 日本精品在线播放| 亚洲成人精选| 精品亚洲a∨| 丝瓜av网站精品一区二区| 精品中文字幕一区二区三区| 丝袜亚洲另类欧美| 久久免费黄色| 麻豆精品在线观看| 亚洲精品一区二区在线播放∴| 国产综合色区在线观看| 久久精品97| 亚洲精品在线二区| 欧美日韩国产综合网| 国产精品久久久久久久免费观看| 日本va欧美va瓶| 久久久久亚洲| 成人羞羞在线观看网站| 国产精品99久久精品| 欧美国产极品| 久久精品色播| 狠狠久久伊人中文字幕| 国产另类在线| 亚洲精品美女91| 午夜一区在线| 欧美成a人片免费观看久久五月天| 国户精品久久久久久久久久久不卡| 欧美高清不卡| 国产欧美日韩在线一区二区| 精品五月天堂| 精品国产午夜肉伦伦影院| 久久激情一区| 在线看片日韩| 美女精品网站| 欧美日韩国产一区二区三区不卡| 日韩av午夜在线观看| 国产精品一区二区精品 | 久久国产生活片100| 国产剧情一区二区在线观看| 最新国产精品久久久| 成人午夜网址| 樱桃视频成人在线观看| 六月天综合网| 久久69成人| 日韩区欧美区| 久久国产乱子精品免费女| 欧美亚洲二区| 国产精品久久免费视频| 快she精品国产999| 国产精品入口久久| 免费一级欧美片在线观看网站| 国产综合精品| 亚洲一级大片| 欧美日韩视频| 国产欧美三级| 久久久91麻豆精品国产一区| 欧美羞羞视频| 91精品电影| 欧美激情在线精品一区二区三区| 一区二区三区四区日本视频| 久久99青青| 精品视频亚洲| 成人午夜网址| 久久亚洲国产| 欧美日韩网址| 久久人人精品| 日韩欧美激情| 亚洲国产影院| 精品一区二区三区中文字幕视频 | 精品国产成人| 视频一区二区三区中文字幕| 精品国产乱码久久久| 色综合视频一区二区三区日韩| 色爱综合网欧美| 日本免费在线视频不卡一不卡二| 99成人在线视频| 国产在线一区不卡| 国产日韩一区二区三免费高清 | 另类专区亚洲| 国产精品主播在线观看| 99久久精品国产亚洲精品| 国产日韩三级| 亚州av日韩av| 男女性色大片免费观看一区二区| 精品久久电影| 麻豆国产欧美日韩综合精品二区| 亚洲精品裸体| 国产视频一区欧美| 久久精品国产www456c0m| 中文字幕高清在线播放| 国产精品大片| 国产精品日本一区二区不卡视频 | 亚洲成av在线| 韩国三级一区| 日本免费久久| 久久久影院免费| 午夜久久福利| 国产99久久久国产精品成人免费| 精品国产一区二区三区av片| 国产高清日韩| 国产一区二区精品福利地址| 鲁大师精品99久久久| 欧美国产极品| 国产精品成久久久久| 日韩欧美一区二区三区免费看| 成人av三级| 免费一二一二在线视频| 久久裸体视频| 蜜桃久久久久久| 欧美天堂一区| 久久久久久夜| 亚洲制服少妇| 久久99精品久久久野外观看| 91大神在线观看线路一区| 欧美国产另类| 日韩在线欧美| 国产亚洲精品v| 奇米亚洲欧美| 日韩理论片av| 亚洲另类视频| 日本一区二区免费高清| 99久久夜色精品国产亚洲1000部| 美女网站一区| 欧美日韩xxxx| 亚洲va中文在线播放免费| 亚洲神马久久| 精品国产精品国产偷麻豆 | 国产精品免费不| 欧美成a人免费观看久久| 天海翼亚洲一区二区三区| 精品国产网站| 中文视频一区| 国产精品亚洲欧美| 在线视频观看日韩| 欧美精品中文| 日韩视频一区二区三区在线播放免费观看 | 国产欧美一区二区三区国产幕精品| 国产精品不卡| 欧美视频久久| 中文一区一区三区免费在线观 | 欧洲一区二区三区精品| 亚洲精品123区| 亚洲免费一区三区| 人人精品亚洲| 福利片在线一区二区| 日韩av午夜在线观看| 香蕉久久久久久久av网站| 日韩久久电影| а√天堂8资源在线| 国产麻豆精品| 91午夜精品| 中文字幕av一区二区三区人| 国产精品女主播一区二区三区| 日韩欧美国产精品综合嫩v| 欧美精品91| 日本天堂一区| 婷婷综合电影| 日韩一区二区久久| 欧美精品一二| 激情婷婷综合| 欧美精品一二| 性欧美长视频| 日韩一区二区三区精品| 免费人成精品欧美精品| 蜜臀精品久久久久久蜜臀 | 日韩午夜免费| 亚洲一级在线| 美女精品一区| 在线视频日韩| 日韩精品一区二区三区免费视频| 亚洲精品观看| 欧美aⅴ一区二区三区视频| 美女精品久久| 久久精品主播|