成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何在Android應(yīng)用中實(shí)現(xiàn)自定義View-創(chuàng)新互聯(lián)

本篇文章為大家展示了如何在Android應(yīng)用中實(shí)現(xiàn)自定義View,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),牟定網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:牟定等地區(qū)。牟定做網(wǎng)站價(jià)格咨詢:18982081108

Android自定義view的種類

自定義view大概可以分為四個(gè)大類,主要是通過(guò)實(shí)現(xiàn)方式來(lái)區(qū)分

      1.自繪控件,繼承view,重寫onDraw方法,在其中進(jìn)行繪制,需要自己適配邊距等等

      2.繼承ViewGroup派生的特殊Layout,主要用于實(shí)現(xiàn)自定義布局,也需要自己適配邊距等

      3.繼承特定的View(如TextView等),不用自己適配支持wrap_conten,match_parent,可以給其加入新的功能

      4.繼承特定的ViewGroup,例如linearlayout,多用于多個(gè)控件的組合view,也不用自己去做適配

自繪控件

這種自定義view是最復(fù)雜的一種,因?yàn)榧纫m配wrap_conten,match_parent又要通過(guò)條件判斷來(lái)在屏幕上繪制不同的內(nèi)容,主要就是重寫onDraw方法

以下是一個(gè)簡(jiǎn)單的onDraw重寫代碼

@Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
 
  final int paddingLeft = getPaddingLeft();
  final int paddingRight = getPaddingRight();
  final int paddingTop = getPaddingTop();
  final int paddingBottom = getPaddingBottom();
 
  //get the view's width and height and decide the radiu
  int width = getWidth() - paddingLeft - paddingRight;
  int height = getHeight() - paddingTop - paddingBottom;
  radiu = Math.min(width , height) / 2 - boundWidth - progressWidth;
 
  //setup the paint
  paint.setStyle(Paint.Style.STROKE);
  paint.setStrokeWidth(boundWidth);
  paint.setColor(Color.BLACK);
 
  //draw the inner circle
  int centerX = paddingLeft + getWidth()/2;
  int centerY = paddingTop + getHeight() / 2;
  canvas.drawCircle(centerX,centerY, radiu, paint);
  
 
  float totalRadiu = radiu +boundWidth +progressWidth/2;
 
  //draw the circlr pic
  if (drawable != null&&bitmap == null) {
   image = ((BitmapDrawable) drawable).getBitmap();
 
   bitmap = Bitmap.createBitmap((int)(2*totalRadiu),(int)(2*totalRadiu), Bitmap.Config.ARGB_8888);
   Canvas bitmapCanvas = new Canvas(bitmap);
 
   Paint bitmapPaint = new Paint();
   bitmapPaint.setAntiAlias(true);
 
   bitmapCanvas.drawCircle(totalRadiu, totalRadiu, radiu, bitmapPaint);
 
   bitmapPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
   bitmapCanvas.drawBitmap(image,null,new RectF(0,0,2*totalRadiu,2*totalRadiu) , bitmapPaint);
 
 
  }
  Rect rect = new Rect((int)(centerX -totalRadiu),(int)(centerY-totalRadiu),(int)(centerX+totalRadiu),(int)(centerY+ totalRadiu));
  canvas.save();
  if(isRotate)
  canvas.rotate(rotateDegree,centerX,centerY);
  canvas.drawBitmap(bitmap,null ,rect, paint);
 
  canvas.restore();
  //set paint for arc
  paint.setStrokeWidth(progressWidth);
  paint.setStrokeCap(Paint.Cap.ROUND);
 
  //prepare for draw arc
  RectF oval = new RectF();
  oval.left = centerX -totalRadiu ;
  oval.top =centerY- totalRadiu ;
  oval.right = centerX + totalRadiu;
  oval.bottom = centerY+ totalRadiu;
  paint.setColor(progressBackColor);
 
  //draw background arc
  canvas.drawArc(oval, arcStar, arcEnd, false, paint);
 
  //draw progress arc
  paint.setColor(progressColor);
  canvas.drawArc(oval, arcStar, progress, false, paint);
 }

標(biāo)題名稱:如何在Android應(yīng)用中實(shí)現(xiàn)自定義View-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article20/jgijo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、企業(yè)網(wǎng)站制作軟件開(kāi)發(fā)、App設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
扶风县| 育儿| 平和县| 航空| 涡阳县| 巴彦县| 松阳县| 临城县| 黄大仙区| 宜丰县| 泰州市| 灵寿县| 会同县| 辽宁省| 泽普县| 松江区| 河南省| 威远县| 朝阳区| 赣州市| 邓州市| 宁南县| 礼泉县| 井研县| 苍溪县| 康定县| 渝北区| 子洲县| 平昌县| 泾阳县| 仙桃市| 宜黄县| 安新县| 西丰县| 道孚县| 西林县| 高青县| 温泉县| 盐边县| 梁山县| 台南县|