亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android自定義view制作抽獎轉盤

2019-10-21 21:33:18
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android自定義view制作抽獎轉盤的具體代碼,供大家參考,具體內容如下

效果圖

Android,view,抽獎,轉盤

TurntableActivity

 

package com.bawei.myapplication.turntable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.animation.RotateAnimation;import com.bawei.myapplication.R;import com.bawei.myapplication.turntable.CustomTurntableView;/** * 轉盤 * @author hasee */public class TurntableActivity extends AppCompatActivity { CustomTurntableView customTurntableView; boolean isTouchInSide = false; float mDownX, mDownY; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_turntable);  initView(); } private void initView() {  customTurntableView = findViewById(R.id.custom);//  findViewById(R.id.custom_inside).setOnClickListener(new View.OnClickListener() {//   @Override//   public void onClick(View v) {//    float degrees = (float)(720 + Math.random() * 1000);//    RotateAnimation rotateAnimation = new RotateAnimation(0, -degrees, 450, 450);//    rotateAnimation.setDuration(5000);//    rotateAnimation.setFillAfter(true);//    customCircleView.startAnimation(rotateAnimation);//   }//  });  findViewById(R.id.custom_inside).setOnTouchListener(new View.OnTouchListener() {   @Override   public boolean onTouch(View v, MotionEvent event) {    if (event.getAction() == MotionEvent.ACTION_DOWN &&      event.getX() > 200 &&      event.getX() < 300 &&      event.getY() > 200 &&      event.getY() < 300) {     isTouchInSide = true;     mDownX = event.getX();     mDownY = event.getY();     return true;    }else if(event.getAction() == MotionEvent.ACTION_MOVE && (      event.getX() < mDownX -10 ||      event.getX() > mDownX + 10 ||      event.getY() < mDownY -10 ||      event.getY() > mDownY + 10) ){     isTouchInSide = false;    } else if (event.getAction() == MotionEvent.ACTION_UP &&      event.getX() > mDownX -10 &&      event.getX() < mDownX + 10 &&      event.getY() > mDownY -10 &&      event.getY() < mDownY + 10 &&      isTouchInSide) {     float degrees = (float) (720 + Math.random() * 1000);     RotateAnimation rotateAnimation = new RotateAnimation(0, -degrees, 250, 250);     rotateAnimation.setDuration(5000);     rotateAnimation.setFillAfter(true);     customTurntableView.startAnimation(rotateAnimation);    }    isTouchInSide = false;    return false;   }  }); }}

對應的布局

<?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <com.bawei.myapplication.turntable.CustomTurntableView  android:id="@+id/custom"  android:layout_width="wrap_content"  android:layout_height="500dp"  /> <com.bawei.myapplication.turntable.CustomTurntableInsideView  android:id="@+id/custom_inside"  android:layout_width="wrap_content"  android:layout_height="500dp"  app:text="開始"  android:background="#3300ff00" /></RelativeLayout>

自定義CustomTurntableView繼承view

 

package com.bawei.myapplication.turntable;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;/** * 這里是畫轉盤的 * @author hasee */public class CustomTurntableView extends View{ Paint mPaint; int mCircleCount = 6; float mStartAngle = 0; RectF rectF; public CustomTurntableView(Context context) {  super(context);  init(); } public CustomTurntableView(Context context, @Nullable AttributeSet attrs) {  super(context, attrs);  init(); } private void init(){  mPaint = new Paint();  mPaint.setColor(Color.BLUE);  mPaint.setStrokeWidth(10);  mPaint.setTextSize(60);  mPaint.setStyle(Paint.Style.FILL);  rectF = new RectF();  rectF.top = 100;  rectF.left = 100;  rectF.right = 400;  rectF.bottom = 400; } String[] textColor = {"一 等 獎","二 等 獎","三 等 獎","四 等 獎","五 等 獎","六 等 獎"}; @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  for(int i = 0; i < mCircleCount; i++){   //按角標單雙號設置扇形顏色,   if(i % 2 == 0 ){    mPaint.setColor(Color.BLUE);   }else{    mPaint.setColor(Color.GREEN);   }   canvas.drawArc(rectF, mStartAngle, 60, true, mPaint);   //設置轉盤上的文字   mPaint.setColor(Color.BLACK);   mPaint.setTextSize(20);   Path path = new Path();   path.addArc(rectF,mStartAngle+20,60);   canvas.drawTextOnPath(textColor[i],path,-10,40,mPaint);   mStartAngle += 60;  } }}

自定義CustomTurntableInsideView繼承view

package com.bawei.myapplication.turntable;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;import com.bawei.myapplication.R;/** * 轉盤中間開始按鈕和指針 * @author hasee */public class CustomTurntableInsideView extends View { /**  * 畫筆  */ Paint mPaint; RectF mRectF; String mStr; public CustomTurntableInsideView(Context context) {  super(context);  init(); } public CustomTurntableInsideView(Context context, @Nullable AttributeSet attrs) {  super(context, attrs);  //自定義屬性,如何添加自定義屬性如下(考點)  //第一步:在values文件夾下創建attrs.xml  //第二步:詳見attrs.xml文件內部  //第三步:在所在的布局文件的根layout中添加xmlns:app="http://schemas.android.com/apk/res-auto"  //第四步:在布局文件的控件中添加app:"你在attrs中設置的attr name"="你的值"  //第五步:調用下面這句話,最后的為R.styleable.你在attrs中設置的declare-styleable name  TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomTurntableView);  //第六步:調用下面這句話,根據你在attrs中設置的format,選擇getXXX方法,  //入參為 R.styleable. 加上 你在attrs中設置的declare-styleable name 加上 _ 加上 你在attrs中設置的attr name  mStr = typedArray.getString(R.styleable.CustomTurntableView_text);  init(); } private void init() {  //以下注釋請看CustomBingView里面  mPaint = new Paint();  mPaint.setColor(Color.RED);  mPaint.setStrokeWidth(10);  mPaint.setTextSize(20);  mPaint.setStyle(Paint.Style.FILL);  mRectF = new RectF();  mRectF.top = 50;  mRectF.bottom = 300;  mRectF.right = 300;  mRectF.left = 200; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  super.onMeasure(widthMeasureSpec, heightMeasureSpec);//  setMeasuredDimension(300, 300); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  //設置畫筆顏色為黑色,  mPaint.setColor(Color.BLACK);  //畫出指針,用一個扇形,然后蓋住后面補分來簡單表示  canvas.drawArc(mRectF, 60, 60, true, mPaint);  mPaint.setColor(Color.RED);  //畫一個紅色的圓形,就是中間的大按鈕  canvas.drawCircle(250, 250, 50, mPaint);  mPaint.setColor(Color.BLACK);  //添加按鈕上的文字  canvas.drawText(mStr, 230, 260, mPaint);  //畫三角,第一步,創建路徑//  Path path = new Path();  //第二步,moveTo第一個頂點//  path.moveTo(300, 300);  //后續相繼lineTo其他頂點//  path.lineTo(300, 400);//  path.lineTo(400, 400);  //閉合//  path.close();//  畫//  canvas.drawPath(path, mPaint); }}

自定義屬性attrs.xml

<?xml version="1.0" encoding="utf-8"?><resources> <!-- name為想要調用這個屬性的類名即可 --> <declare-styleable name="CustomTurntableView">  <!-- name為屬性的名字,可以隨意起,只要符合規則看得懂 -->  <!-- format為屬性內容的類型 -->  <attr name="text" format="string"></attr> </declare-styleable></resources>

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕欧美精品日韩中文字幕| 亚洲自拍偷拍区| 日本不卡视频在线播放| 精品久久香蕉国产线看观看亚洲| 久久久久久久成人| 国产精自产拍久久久久久蜜| 久久久久久高潮国产精品视| 亚洲一区中文字幕在线观看| 国产一区二区在线免费| 国产色综合天天综合网| 久久久久久av| 久久国产精品影片| 日韩欧美视频一区二区三区| 欧美国产日韩xxxxx| 欧美激情一区二区三区高清视频| 亚洲色图25p| 国产成人鲁鲁免费视频a| 97香蕉久久夜色精品国产| 久久精品国产清自在天天线| 欧美裸体男粗大视频在线观看| 自拍亚洲一区欧美另类| 欧美与欧洲交xxxx免费观看| 久久久国产一区二区三区| 国产日韩欧美夫妻视频在线观看| 成人一区二区电影| 777国产偷窥盗摄精品视频| 在线视频国产日韩| 最好看的2019年中文视频| 欧美一区二区三区免费视| 38少妇精品导航| 成人免费视频97| 日韩网站在线观看| 97精品一区二区视频在线观看| 亚洲精品91美女久久久久久久| 欧美疯狂做受xxxx高潮| 久久99久久亚洲国产| 亚洲欧美中文日韩v在线观看| 亚洲人永久免费| 国产日韩换脸av一区在线观看| 亚洲男人7777| 在线丨暗呦小u女国产精品| 日韩中文字幕视频在线观看| 欧美夜福利tv在线| 欧美精品在线极品| 国产成人精品视频在线观看| 精品二区三区线观看| 色哟哟亚洲精品一区二区| 91美女片黄在线观| 国产精品美女在线| 亚洲欧美另类在线观看| 亚洲欧美色图片| 国产欧美一区二区三区在线| 亚洲成人黄色在线观看| 精品av在线播放| 国产在线精品一区免费香蕉| 国产精品美女免费看| 97视频com| 国产精品美女在线观看| 久久69精品久久久久久久电影好| 91av视频导航| 精品国产乱码久久久久久婷婷| 色av中文字幕一区| 欧美日韩国产一中文字不卡| 亚洲色图第三页| 5566日本婷婷色中文字幕97| 中文字幕亚洲无线码a| 国产精品久久久久久久久久99| 欧美日韩成人在线播放| 欧美日韩国产精品一区二区三区四区| 久久亚洲精品国产亚洲老地址| 精品国产一区二区三区久久狼黑人| 欧美日韩美女在线| 国产精品美女999| 久久久久国产精品免费网站| 日av在线播放中文不卡| 92版电视剧仙鹤神针在线观看| 欧美色videos| 在线观看视频亚洲| 亚洲综合社区网| 久久亚洲电影天堂| 精品欧美aⅴ在线网站| 欧美性色xo影院| 久久影视免费观看| 孩xxxx性bbbb欧美| 久久影院资源网| 欧美亚洲日本网站| 亚洲欧美在线免费| 精品小视频在线| 成人黄色在线播放| www.欧美精品| 中文字幕一区电影| 国产日韩欧美在线视频观看| 国产日韩欧美视频| 日韩电影免费观看在线观看| 久久手机精品视频| 久久天天躁狠狠躁夜夜躁2014| 久久久久久综合网天天| 久久精品国产久精国产思思| 日韩精品在线免费观看视频| 国产精品久久999| 久久韩国免费视频| 国产精品一区二区三| 亚洲乱码国产乱码精品精天堂| 欧美性xxxx极品hd欧美风情| 久久久久久这里只有精品| 国产一区二区三区在线播放免费观看| 亚洲精品福利资源站| 欧美激情精品久久久久久大尺度| 精品亚洲一区二区三区在线观看| 色偷偷亚洲男人天堂| 久久婷婷国产麻豆91天堂| 亚洲国产成人精品久久| 亚洲欧美福利视频| 永久555www成人免费| 国产一区二区三区四区福利| 欧美日韩午夜剧场| 精品久久久久久| 国产精品一区二区性色av| 国产一区二区三区18| 久久久久久国产精品| 国产日韩综合一区二区性色av| 欧美黄网免费在线观看| 国产精品成av人在线视午夜片| 欧美在线播放视频| 国产欧美va欧美va香蕉在| 日韩av中文字幕在线播放| 国产成人精品免费久久久久| 欧美日韩性视频| 中日韩美女免费视频网址在线观看| 亚洲人线精品午夜| 久久精品视频在线| 欧美激情第1页| 国产精品美女主播| 亚洲欧美日韩精品久久奇米色影视| 激情懂色av一区av二区av| 欧美在线视频一区| www.久久色.com| 粉嫩老牛aⅴ一区二区三区| 欧美制服第一页| 亚洲黄色有码视频| 国产精品91久久| 日韩欧美中文免费| 日韩美女写真福利在线观看| 日韩av大片免费看| 欧美另类暴力丝袜| 国产精品色婷婷视频| 成人精品一区二区三区电影黑人| 91日韩在线播放| 成人欧美一区二区三区黑人孕妇| 91精品国产91久久久久久吃药| 国产精品扒开腿做爽爽爽的视频| 美日韩精品免费视频| 亚洲精品国产精品自产a区红杏吧| 久久精品男人天堂| 欧美成人一二三| 日韩欧美在线视频观看| 国产精品视频色| 日av在线播放中文不卡| 成人深夜直播免费观看| 精品国产视频在线| 国产成人在线精品| 日韩成人xxxx| 91精品国产91久久久久久最新| 日韩在线激情视频|