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

Android自定義View實現(xiàn)自動轉(zhuǎn)圈效果

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

本文實例為大家分享了Android實現(xiàn)自動轉(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>

寫一個類繼承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);// 獲取不到給默認值
  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);// 粗細
  // 畫運動的軌跡
  paint.setColor(Color.RED);
  // 上下左右與圓重合,左邊為圓心的橫坐標(biāo)減去半徑,上邊為縱坐標(biāo)減去半徑,以此類推
  RectF rectF = new RectF(cx - radius, cy - radius, cx + radius, cy + radius);
  // 起始角度,旋轉(zhuǎn)角度,第三個屬性為是否填充,畫筆
  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>

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

相關(guān)文章

  • Android Init進程對信號的處理流程詳細介紹

    Android Init進程對信號的處理流程詳細介紹

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了Android數(shù)據(jù)持久化之File機制,較為詳細的分析了File機制的原理及Android使用File實現(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)流程實踐

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

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

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

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

    Android動畫之雷達掃描效果

    雷達掃描效果在我們?nèi)粘?jīng)??吹剑热缭谛吕宋⒉┥嫌幸粋€雷達功能,感覺類似于微信附近的人。只是多了一個類似于雷達掃描效果的動畫,某些知名安全軟件也有這樣的雷達效果,因此今天在這里小編帶著大家學(xué)習(xí)一下。
    2016-08-08

最新評論

鄂州市| 开鲁县| 宽城| 余干县| 札达县| 枞阳县| 商南县| 于都县| 昂仁县| 响水县| 攀枝花市| 进贤县| 望江县| 合肥市| 三亚市| 陈巴尔虎旗| 岗巴县| 年辖:市辖区| 镇康县| 海兴县| 庐江县| 龙川县| 万山特区| 邛崃市| 镶黄旗| 龙井市| 衢州市| 宝兴县| 大城县| 丁青县| 运城市| 新龙县| 辽阳县| 林周县| 富民县| 聂拉木县| 朝阳县| 滨州市| 宝鸡市| 札达县| 西昌市|