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

首頁 > 系統 > Android > 正文

Android實現抽獎轉盤實例代碼

2020-04-11 11:47:20
字體:
來源:轉載
供稿:網友

本文詳述了android抽獎程序的實現方法,程序為一個抽獎大轉盤代碼,里面定義了很多圖形方法和動畫。

實現主要功能的SlyderView.java源代碼如下:

import android.app.Activity;import android.content.Context;import android.graphics.BlurMaskFilter;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.ColorMatrixColorFilter;import android.graphics.EmbossMaskFilter;import android.graphics.MaskFilter;import android.graphics.Paint;import android.graphics.PorterDuffXfermode;import android.graphics.Paint.Style;import android.graphics.PorterDuff.Mode;import android.graphics.Path;import android.graphics.RadialGradient;import android.graphics.RectF;import android.graphics.Shader.TileMode;import android.util.AttributeSet;import android.util.TypedValue;import android.view.View;public class SlyderView extends View{  public SlyderView(Context context, AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);    init(context);  }  public SlyderView(Context context, AttributeSet attrs) {    super(context, attrs);    init(context);  }  public SlyderView(Context context) {    super(context);    init(context);  }  /**   * 屏幕寬度   */  private int screenW;  /**   * 屏幕的高度   */  private int screenH;  /**   * 分割的度數   */  private int [] drgrees = {20,50,40,90,70,40,50};  /***   * 分割的文字   */  private String [] strs = {"level1","level2","level3","level4","level5","level6","level7"};  /**   * 分割的顏色   */  private int [] colos = new int[] { 0xfed9c960, 0xfe57c8c8, 0xfe9fe558, 0xfef6b000, 0xfef46212, 0xfecf2911, 0xfe9d3011 };  /**   * 畫筆   */  private Paint paint;  /**   * 文字的大小   */  private float textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 15, getResources().getDisplayMetrics());  /**   * 文字的顏色   */  private int textcolor = Color.WHITE;  /**   * 園的半徑   */  private float radius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 100, getResources().getDisplayMetrics());  /**   * 畫文字的距離   */  private float textdis = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 80, getResources().getDisplayMetrics());  /**   * 畫箭頭的大小   */  private float roketSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics());  private float initDegress = 0;  /**   * 圓心   */  private float centerX;  /**   * 圓心   */  private float centerY;  /**   * 立體邊緣   */  private MaskFilter filter = new EmbossMaskFilter(new float[] { 1, 1, 1 },0.4f, 6, 3.5f);  private MaskFilter outerFilter = new BlurMaskFilter(10, BlurMaskFilter.Blur.OUTER);  private MaskFilter innerFilter = new BlurMaskFilter(10, BlurMaskFilter.Blur.INNER);  @SuppressWarnings("deprecation")  private void init(Context context){    paint = new Paint();    paint.setAntiAlias(true);    paint.setStyle(Style.FILL);    paint.setColor(Color.WHITE);    screenW = ((Activity)context).getWindowManager().getDefaultDisplay().getWidth();    screenH = ((Activity)context).getWindowManager().getDefaultDisplay().getHeight();    int[] colores = new int[3];    colores[0] = Color.rgb(0xfF, 0x99, 0x00);    colores[1] = Color.rgb(0xff, 0xff, 0x00);    colores[2] = Color.rgb(0xff, 0x99, 0x00);    float[] positions = new float[3];    positions[0] = 0.0f;    positions[1] = 0.5f;    positions[2] = 1.0f;    gradient = new RadialGradient(centerX, centerY, radius/5, colores, positions, TileMode.CLAMP);  }  /**   * 繪制三角箭頭   */  private Path path = new Path();  /**   * 繪制矩形框   */  private RectF oval;  /**   * 外圓內陰影矩陣   */  private ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(new float[]{      1,0,0,0,0,      0,1,0,0,0,      0,0,1,0,0,      0,0,0,-1,255  });  @Override  protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    centerX = screenW/2;    centerY = screenH/2;    oval = new RectF(centerX-radius,centerY-radius,centerX+radius,centerY+radius);    float start = 0;    paint.setColor(Color.rgb(0xdd, 0xdd, 0xdd));    paint.setAlpha(127);    canvas.drawCircle(centerX, centerY, radius+10, paint);    paint.setAlpha(255);    //畫扇形    paint.setAntiAlias(true);    for(int i=0;i<drgrees.length;i++){      float sweepAngle = drgrees[i];      float startAngle = start;      paint.setColor(colos[i%colos.length]);      canvas.drawArc(oval, startAngle, sweepAngle, true, paint);      start += drgrees[i];    }    //畫文字    paint.setColor(textcolor);    paint.setAntiAlias(true);    paint.setTextSize(textSize);    paint.setTextAlign(Paint.Align.RIGHT);    start = 0;    for(int i=0;i<drgrees.length;i++){      canvas.save();      canvas.rotate(start+drgrees[i]/2, centerX, centerY);      canvas.drawText(strs[i], centerX+textdis, centerY, paint);      canvas.restore();      start += drgrees[i];    }    int saveCount = canvas.save();    //畫外層立體效果    paint.setColorFilter(colorFilter);    canvas.saveLayer(oval,paint,Canvas.ALL_SAVE_FLAG);    paint.setColorFilter(null);    canvas.drawARGB(255, 0, 0, 0);    paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));    canvas.drawCircle(centerX, centerY, radius, paint);    paint.setXfermode(null);    paint.setMaskFilter(innerFilter);    paint.setColor(Color.argb(0xff, 0, 0, 0));    canvas.drawCircle(centerX, centerY, radius, paint);    paint.setMaskFilter(null);    canvas.restoreToCount(saveCount);    //畫內圓和內園效果    canvas.save();    paint.setColor(Color.argb(0xff, 0, 0, 0));    paint.setAntiAlias(true);    paint.setMaskFilter(outerFilter);    canvas.rotate(initDegress, centerX, centerY);    canvas.drawCircle(centerX, centerY, radius/3, paint);    paint.setMaskFilter(null);    paint.setColor(Color.WHITE);    canvas.drawCircle(centerX, centerY, radius/3, paint);    //畫三角型疊加當箭頭    path.moveTo(centerX-radius/3, centerY);    path.lineTo(centerX, centerY-radius/3-roketSize);    path.lineTo(centerX+radius/3, centerY);    path.close();    canvas.drawPath(path, paint);    canvas.restore();    paint.setMaskFilter(filter);    paint.setColor(Color.GREEN);    paint.setShader(gradient);    canvas.drawCircle(centerX, centerY, radius/5, paint);    paint.setMaskFilter(null);    paint.setShader(null);    //重繪調整三角的指向達到滾動的效果,現實項目中可不能這樣用的,效率太低下了,拆分View用動畫完成滾動才是王道    if(isRunning){      if(initDegress>=360){        initDegress = 0;      }      initDegress +=4;      invalidate();    }    if(isStoping){      if(initDegress<=360){        initDegress+=4;        invalidate();      }else{        if(initDegress-360<stop_degress){          initDegress+=2;          invalidate();        }      }    }  }  private boolean isRunning = false;  private boolean isStoping = false;  private int stop_degress =90;  /**   * 漸變   */  private RadialGradient gradient;  public void play(){    isRunning = true;    invalidate();  }  public void stop(int count){    for(int i =0;i<=count;i++){      if(i == count){        stop_degress +=drgrees[i]/2;      }else{        stop_degress +=drgrees[i];      }    }    isStoping = true;    isRunning = false;    invalidate();  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩大片在线观看视频| 欧美日韩国产精品一区| 久久久精品视频在线观看| 8x拔播拔播x8国产精品| 欧美大片网站在线观看| 亚洲精品美女在线观看播放| 97超级碰碰人国产在线观看| 精品免费在线视频| 91精品国产91| 亚洲男人天堂2024| 亚洲变态欧美另类捆绑| 日韩有码在线观看| 国产精品96久久久久久| 正在播放亚洲1区| 欧美在线观看视频| 欧美日韩成人在线观看| 欧美精品成人91久久久久久久| 不卡中文字幕av| 国产成人免费91av在线| 日韩在线播放视频| 国产精品香蕉av| 国产精品久久久亚洲| 91chinesevideo永久地址| 国色天香2019中文字幕在线观看| 精品一区二区电影| 久久在线免费观看视频| 国产成人久久久精品一区| 久久精品亚洲国产| 日韩精品在线免费观看视频| 在线日韩中文字幕| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文字幕亚洲综合| 91精品国产综合久久久久久久久| 亚洲人成在线免费观看| 午夜免费在线观看精品视频| 亚洲在线www| 久久精品欧美视频| 日韩免费不卡av| 国产999精品视频| 777午夜精品福利在线观看| 最新国产成人av网站网址麻豆| 黄色成人av网| 欧美另类老肥妇| 精品视频在线播放免| 亚洲激情 国产| 国产日韩欧美在线看| 成人午夜在线视频一区| 欧美三级欧美成人高清www| 国产视频观看一区| 日本一本a高清免费不卡| 久久久久久久久久久av| 亚洲aⅴ日韩av电影在线观看| 亚洲精品视频久久| 日韩精品视频在线播放| 亚洲精品不卡在线| 一本大道亚洲视频| 欧美亚洲国产成人精品| 久久人人爽人人爽人人片亚洲| 亚洲国产精久久久久久| 国产精欧美一区二区三区| 亚洲国产精品悠悠久久琪琪| 欧美日韩精品在线视频| 日韩精品在线视频观看| 国产精品极品美女在线观看免费| 大伊人狠狠躁夜夜躁av一区| 色综合91久久精品中文字幕| 亚洲大胆人体av| 亚洲 日韩 国产第一| 日韩高清电影免费观看完整| 国产va免费精品高清在线| 欧美激情亚洲国产| 日韩毛片中文字幕| 亚洲自拍另类欧美丝袜| 国产日韩欧美黄色| 色一情一乱一区二区| 91极品女神在线| 亚洲综合在线中文字幕| 国产91精品网站| 亚洲欧洲美洲在线综合| 亚洲成人久久电影| 日韩欧美福利视频| 亚洲美女精品久久| 亚洲视频在线观看视频| 热久久这里只有精品| 欧美大学生性色视频| 九色精品免费永久在线| 日韩电影免费观看中文字幕| 日韩精品在线观看一区二区| 成人在线观看视频网站| 欧美精品在线视频观看| 欧美日韩中文在线观看| 亚洲精品资源在线| 亚洲人a成www在线影院| 97香蕉超级碰碰久久免费的优势| 日韩三级成人av网| 伦伦影院午夜日韩欧美限制| 亚洲一区二区三区成人在线视频精品| 成人精品一区二区三区电影免费| 亚洲一区二区三区四区在线播放| 亚洲肉体裸体xxxx137| 97在线观看视频国产| 亚洲国产成人91精品| 国产日韩欧美电影在线观看| 国产色婷婷国产综合在线理论片a| 精品国产乱码久久久久久虫虫漫画| 欧美国产日韩一区二区| 国产成人精品视频| 国产成人精品最新| 欧美理论电影在线播放| 2019日本中文字幕| 欧美大全免费观看电视剧大泉洋| 久久亚洲精品中文字幕冲田杏梨| 欧美超级乱淫片喷水| 欧美成在线视频| 国内偷自视频区视频综合| 97久久超碰福利国产精品…| 精品久久久中文| 亚洲在线视频福利| 欧美精品videos性欧美| 成人欧美一区二区三区在线| 久久99精品久久久久久琪琪| 国产做受高潮69| 日韩欧美在线视频日韩欧美在线视频| 欧美日韩在线视频一区二区| 欧美成人免费全部| 色www亚洲国产张柏芝| 日韩视频精品在线| 国产精品久久久久久久久久东京| 国产亚洲精品久久久久久| 亚洲深夜福利在线| 5566日本婷婷色中文字幕97| 日韩免费观看av| 国产亚洲一区二区在线| 日本aⅴ大伊香蕉精品视频| 中文字幕不卡在线视频极品| 68精品国产免费久久久久久婷婷| 亚洲精品欧美日韩| 国产精品中文字幕在线观看| 久久婷婷国产麻豆91天堂| 久久人人爽人人爽人人片亚洲| 亚洲欧洲日产国产网站| 国产日本欧美在线观看| 久久人91精品久久久久久不卡| 日韩精品在线视频| 国产一区二区色| 亚洲第一天堂av| 永久555www成人免费| 国产欧美日韩免费| 国产婷婷97碰碰久久人人蜜臀| 欧美成人午夜激情在线| 欧美中在线观看| 欧美精品中文字幕一区| 亚洲的天堂在线中文字幕| 国产成人啪精品视频免费网| 国产在线视频2019最新视频| 亚洲精品电影网在线观看| 欧美裸体男粗大视频在线观看| 九色精品美女在线| 国产精品第3页| 萌白酱国产一区二区| 欧美国产第二页| 欧美自拍视频在线观看| 91精品国产免费久久久久久| 日韩成人在线视频观看|