最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android自定義View實(shí)現(xiàn)自動(dòng)轉(zhuǎn)圈效果

 更新時(shí)間:2018年05月10日 16:38:44   作者:Cyq_0927  
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)自動(dòng)轉(zhuǎn)圈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)自動(dòng)轉(zhuǎn)圈效果展示的具體代碼,供大家參考,具體內(nèi)容如下

在values文件夾下創(chuàng)建attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <declare-styleable name="MyPb">
  <attr name="circle_color" format="color" />
  <attr name="circle_radius" format="dimension" /><!-- 尺寸 -->
  <attr name="circle_x" format="dimension" />
  <attr name="circle_y" format="dimension" />
 </declare-styleable>
</resources>

寫一個(gè)類繼承view

package widget;

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.bwie.zdycircle.R;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Created by Administrator on 2017/12/7.
 */

public class MyPb extends View {

 private float radius, cx, cy;
 private Paint paint;
 private float sweepAngle;// 旋轉(zhuǎn)角度

 public MyPb(Context context) {
  super(context, null);
 }

 public MyPb(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
  // 獲取自定義的屬性
  TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyPb);

  // 獲取顏色
  int color = a.getColor(R.styleable.MyPb_circle_color, Color.BLACK);// 獲取不到給默認(rèn)值
  radius = a.getDimension(R.styleable.MyPb_circle_radius, 20);
  cx = a.getDimension(R.styleable.MyPb_circle_x, 100);
  cy = a.getDimension(R.styleable.MyPb_circle_y, 100);

  // 需要回收
  a.recycle();

  paint = new Paint();
  paint.setAntiAlias(true);// 抗鋸齒
  paint.setColor(color);
  paint.setStyle(Paint.Style.STROKE);// 空心

  Timer timer = new Timer();
  timer.schedule(new TimerTask() {
   @Override
   public void run() {
    if (sweepAngle > 360) {
     return;
    }
    sweepAngle += 1;
    postInvalidate();
   }
  }, 1000, 20);// 每隔20毫秒執(zhí)行一次

 }

 @Override
 protected void onDraw(Canvas canvas) {
  paint.setColor(Color.BLUE);
  paint.setStrokeWidth(10);
  canvas.drawCircle(cx, cy, radius, paint);// 畫圓
  paint.setStrokeWidth(20);// 粗細(xì)
  // 畫運(yùn)動(dòng)的軌跡
  paint.setColor(Color.RED);
  // 上下左右與圓重合,左邊為圓心的橫坐標(biāo)減去半徑,上邊為縱坐標(biāo)減去半徑,以此類推
  RectF rectF = new RectF(cx - radius, cy - radius, cx + radius, cy + radius);
  // 起始角度,旋轉(zhuǎn)角度,第三個(gè)屬性為是否填充,畫筆
  canvas.drawArc(rectF, -90, sweepAngle, false, paint);

  // 繪制文字
  int progress = (int) (sweepAngle / 360f * 100);
  paint.setTextSize(50);
  paint.setStrokeWidth(0);
  paint.setColor(Color.BLACK);
  canvas.drawText(progress + "%", cx - 20, cy, paint);
 }
}

在主頁面布局中引入自定義view類

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.bwie.zdycircle.MainActivity">

 <widget.MyPb
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:circle_color="#0000ff"
  app:circle_radius="70dp"
  app:circle_x="200dp"
  app:circle_y="200dp" />

</LinearLayout>

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

相關(guān)文章

  • Android Init進(jìn)程對(duì)信號(hào)的處理流程詳細(xì)介紹

    Android Init進(jìn)程對(duì)信號(hào)的處理流程詳細(xì)介紹

    這篇文章主要介紹了Android Init進(jìn)程對(duì)信號(hào)的處理流程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 解析Android開發(fā)優(yōu)化之:軟引用與弱引用的應(yīng)用

    解析Android開發(fā)優(yōu)化之:軟引用與弱引用的應(yīng)用

    Java從JDK1.2版本開始,就把對(duì)象的引用分為四種級(jí)別,從而使程序能更加靈活的控制對(duì)象的生命周期。這四種級(jí)別由高到低依次為:強(qiáng)引用、軟引用、弱引用和虛引用,本篇文章重點(diǎn)介紹一下軟引用和弱引用
    2013-05-05
  • Android Handler內(nèi)存泄漏詳解及其解決方案

    Android Handler內(nèi)存泄漏詳解及其解決方案

    在android開發(fā)過程中,我們可能會(huì)遇到過令人奔潰的OOM異常,這篇文章主要介紹了Android Handler內(nèi)存泄漏詳解及其解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android應(yīng)用禁止屏幕休眠的3種方法

    Android應(yīng)用禁止屏幕休眠的3種方法

    這篇文章主要為大家詳細(xì)介紹了Android應(yīng)用禁止屏幕休眠的3種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 一文讀懂Android?Kotlin的數(shù)據(jù)流

    一文讀懂Android?Kotlin的數(shù)據(jù)流

    這篇文章主要介紹了一文讀懂Android?Kotlin的數(shù)據(jù)流,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Android數(shù)據(jù)持久化之File機(jī)制分析

    Android數(shù)據(jù)持久化之File機(jī)制分析

    這篇文章主要介紹了Android數(shù)據(jù)持久化之File機(jī)制,較為詳細(xì)的分析了File機(jī)制的原理及Android使用File實(shí)現(xiàn)數(shù)據(jù)持久化的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • Android程序開發(fā)之自定義設(shè)置TabHost,TabWidget樣式

    Android程序開發(fā)之自定義設(shè)置TabHost,TabWidget樣式

    這篇文章主要介紹了Android程序開發(fā)之自定義設(shè)置TabHost,TabWidget樣式的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Android?使用maven?publish插件發(fā)布產(chǎn)物(aar)流程實(shí)踐

    Android?使用maven?publish插件發(fā)布產(chǎn)物(aar)流程實(shí)踐

    這篇文章主要介紹了Android?使用maven?publish插件發(fā)布產(chǎn)物(aar)流程實(shí)踐,Android?Gradle插件根據(jù)項(xiàng)目gradle中應(yīng)用不同的插件類型在編譯組裝后會(huì)生成不同的產(chǎn)物,具體相關(guān)介紹,需要的小伙伴可以參考一下
    2022-09-09
  • Android利用Intent實(shí)現(xiàn)讀取圖片操作

    Android利用Intent實(shí)現(xiàn)讀取圖片操作

    這篇文章主要為大家詳細(xì)介紹了Android利用Intent實(shí)現(xiàn)讀取圖片操作的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android動(dòng)畫之雷達(dá)掃描效果

    Android動(dòng)畫之雷達(dá)掃描效果

    雷達(dá)掃描效果在我們?nèi)粘?huì)經(jīng)常看到,比如在新浪微博上有一個(gè)雷達(dá)功能,感覺類似于微信附近的人。只是多了一個(gè)類似于雷達(dá)掃描效果的動(dòng)畫,某些知名安全軟件也有這樣的雷達(dá)效果,因此今天在這里小編帶著大家學(xué)習(xí)一下。
    2016-08-08

最新評(píng)論

华池县| 民乐县| 吕梁市| 新安县| 荃湾区| 尚志市| 和平县| 玛沁县| 虹口区| 武义县| 阿勒泰市| 瑞丽市| 瑞安市| 达尔| 晋宁县| 上饶市| 建阳市| 乐业县| 亳州市| 修文县| 台南市| 静安区| 平顶山市| 壶关县| 芷江| 竹山县| 光山县| 东明县| 赤城县| 五指山市| 灌云县| 潜江市| 勐海县| 长乐市| 桓台县| 来宾市| 福贡县| 合阳县| 繁昌县| 永泰县| 彭阳县|