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

您的位置:首頁技術文章
文章詳情頁

android實現簡單圓弧效果

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

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

android實現簡單圓弧效果

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); //十字線,用來參考的,可刪除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) { } }); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久激情五月婷婷| 国产精品一区高清| 亚洲成人不卡| 欧美日韩一区二区综合| 久久国产精品久久久久久电车| 日韩亚洲在线| 日本不卡高清| 麻豆精品在线| 激情综合网站| 日本成人在线网站| 色综合狠狠操| 麻豆久久精品| 精品一区91| 日韩高清中文字幕一区二区| 亚洲少妇一区| 欧美片网站免费| 神马午夜在线视频| 亚洲欧美日本国产| 久久精品国产99国产精品| 久久国产日韩| 日韩精品一级| 成人在线网站| 69堂精品视频在线播放| 99久久九九| 国产欧美在线| 激情综合在线| 国产精品美女午夜爽爽| 极品裸体白嫩激情啪啪国产精品| 亚洲精一区二区三区| 国语对白精品一区二区| 久久亚洲二区| 91亚洲一区| 蜜臀久久99精品久久久画质超高清 | 久久精品亚洲人成影院| 亚洲欧美日韩国产一区二区| 国产欧美日韩精品高清二区综合区 | 日韩精品dvd| 伊人www22综合色| 电影91久久久| 日韩黄色av| 欧美另类综合| 国产精品久久久久久久免费观看| 亚洲丝袜美腿一区| 日韩不卡视频在线观看| 在线精品福利| 88xx成人免费观看视频库| 亚洲区第一页| 亚洲激情五月| 91综合视频| 欧美私人啪啪vps| 在线看片不卡| 神马久久午夜| 麻豆精品国产91久久久久久| 亚洲18在线| 在线成人直播| 日韩一区电影| 国产精品黄色片| 国产一区二区中文| 国产激情一区| 亚洲性视频h| 你懂的亚洲视频| 中文字幕日韩亚洲| 偷拍欧美精品| 91精品国产乱码久久久久久久| 国产精品免费大片| 亚洲日本久久| 免费日韩一区二区| 欧美.日韩.国产.一区.二区 | 久久中文欧美| 久久国内精品自在自线400部| 亚洲少妇一区| 久久婷婷一区| 在线观看精品| 成人片免费看| 亚洲天堂免费电影| 国产拍在线视频| 日韩a一区二区| 国产精品99视频| 精品视频免费| 成人三级高清视频在线看| 麻豆久久一区| 久久精品国产在热久久| 精品三级久久久| 电影91久久久| 热三久草你在线| 久久男女视频| 99久久久国产精品美女| 欧美午夜精彩| 狠狠干成人综合网| 午夜国产精品视频| 亚洲欧美日韩专区| 伊人国产精品| 日韩国产成人精品| 国产区精品区| 国产一区二区三区网| 在线手机中文字幕| 日韩欧美一区二区三区在线视频 | 麻豆精品一区二区综合av| 久久精品国产999大香线蕉| 国产aa精品| 亚洲va中文在线播放免费| 韩日一区二区三区| 亚洲精品美女91| 欧美日韩亚洲一区二区三区在线| 国产九九精品| 久久精品一区二区三区中文字幕| 国语精品一区| 日韩精品一卡| 久久xxxx| 日韩中出av| 国产精品s色| 亚洲人成在线网站| 一本色道精品久久一区二区三区| 亚洲日本久久| 国产精品18| 亚洲精品永久免费视频| 不卡av一区二区| 日本亚洲最大的色成网站www| 国产经典一区| 欧美日韩水蜜桃| 日韩av中文在线观看| 麻豆精品视频在线观看视频| 亚洲伦乱视频| 伊人www22综合色| 国产精品久久777777毛茸茸| 伊人久久在线| 最近国产精品视频| 激情久久99| 午夜久久免费观看| 国产日产精品_国产精品毛片| 中文字幕在线视频网站| 国产亚洲在线观看| 久久丁香四色| 国内精品福利| 国产毛片久久久| 99视频精品全国免费| 亚洲精品影视| 日韩精品91| 久久精品99国产精品日本| 亚洲美女久久精品| 亚洲综合图色| 国产在线看片免费视频在线观看| 在线观看亚洲精品福利片| 色爱综合网欧美| 日韩精品一区二区三区中文字幕| 欧美日韩在线观看首页| 日本不卡高清| 欧美+日本+国产+在线a∨观看| 欧美亚洲色图校园春色| 久久一区二区中文字幕| 国产欧美啪啪| 噜噜噜久久亚洲精品国产品小说| 欧美aaaaaa午夜精品| 日韩午夜在线| 国产一区二区三区不卡视频网站 | 中文精品视频| sm久久捆绑调教精品一区| 最新日韩av| 粉嫩av一区二区三区四区五区 | 久久永久免费| 久久先锋影音| 国产99久久| 精品久久电影| 婷婷精品在线| 一区在线视频观看| 日韩亚洲一区在线| 欧美激情五月| 亚洲欧洲免费| 国产高清久久| 国产v日韩v欧美v| 国产日产精品_国产精品毛片| 香蕉久久夜色精品国产| 欧美羞羞视频| 精品久久福利| 国产剧情在线观看一区| 免费看黄色91| 91精品99| 电影亚洲精品噜噜在线观看| 麻豆国产91在线播放| 日韩1区2区3区| 久热re这里精品视频在线6| 欧美一区二区性| 福利一区视频| 精品三级国产| 老司机精品视频网| 国产精品传媒麻豆hd| 日韩高清电影免费| 蜜臀av亚洲一区中文字幕| 亚洲精品一二三区区别| 国产99精品| 日韩精品水蜜桃| 91日韩在线| 国产不卡人人| 成人精品动漫一区二区三区| 蜜桃精品视频| 激情综合五月| 综合日韩av| 日韩在线视频精品| 中文av在线全新| 国产传媒在线观看|