欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android自定義view之利用drawArc方法實現(xiàn)動態(tài)效果(思路詳解)

 更新時間:2021年08月24日 10:07:01   作者:計蒙不吃魚  
這篇文章主要介紹了Android自定義view之利用drawArc方法實現(xiàn)動態(tài)效果,drawArc方法包含了五個參數(shù),具體細節(jié)在本文中給大家提到過,需要的朋友可以參考下

前言

前幾天看了一位字節(jié)Android工程師的一篇博客,他實現(xiàn)的是歌詞上下滾動的效果,實現(xiàn)的關鍵就是定義一個偏移量,然后根據(jù)情況去修改這個值,最后觸發(fā)View的重繪來達到效果。于是今天根據(jù)這個思路來寫一篇簡單的文章。歡迎留言

一、準備

在這之前呢,還是得簡單描述一下自定義view中的一些準備工作

1.測量

 @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mWidth = w;
        mHeight = h;
        useWidth = mWidth;
        if (mWidth > mHeight) {
            useWidth = mHeight;
        }
    }

2.初始化畫筆

 private void initPaint() {
        //初始化
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(0x88FF0000);
        mPaint.setStrokeWidth(4);

        //初始化
        mFramePaint = new Paint();
        mFramePaint.setAntiAlias(true);
        mFramePaint.setStyle(Paint.Style.STROKE);
        mFramePaint.setStrokeWidth(0);
    }

3.自定義屬性

這個案例因為時間關系就不自定義屬性了,更多請參考本人以前的文章:Android自定義view之圍棋動畫

二、關鍵方法介紹

drawArc

此方法中共有五個參數(shù)

  • oval :指定圓弧的外輪廓矩形區(qū)域。
  • startAngle: 圓弧起始角度,單位為度。
  • sweepAngle: 圓弧掃過的角度,順時針方向,單位為度,從右中間開始為零度。
  • useCenter:為True時,在繪制圓弧時將圓心包括在內(nèi),通常用來繪制扇形。
  • paint: 繪制圓弧的畫板屬性。

 三.實現(xiàn)

 1.思路

通過改變sweepAngle(上述方法第三個參數(shù))的值,然后刷新View來達到效果

代碼如下:

  mSweep += SWEEP_INC;
        if (mSweep > 360) {
            mSweep -= 360;
        }
        //刷新View
        invalidate();

2.效果圖

請?zhí)砑訄D片描述

源碼

MySampleView.java

public class MySampleView extends View {
    private int mWidth;
    private int mHeight;
    private int useWidth, minwidth;
    private Paint mPaint;
    private Paint mFramePaint;
    private RectF mBigOval;
    private float mStart;
    private float mSweep;

    private static final float SWEEP_INC = 2;

    public MySampleView(Context context) {
        super(context);
    }

    public MySampleView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MySampleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public MySampleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
    private void init() {
        initPaint();
    }
    private void initPaint() {
        //初始化
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(0x88FF0000);
        mPaint.setStrokeWidth(4);

        //初始化
        mFramePaint = new Paint();
        mFramePaint.setAntiAlias(true);
        mFramePaint.setStyle(Paint.Style.STROKE);
        mFramePaint.setStrokeWidth(0);
    }
    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mWidth = w;
        mHeight = h;
        useWidth = mWidth;
        if (mWidth > mHeight) {
            useWidth = mHeight;
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        init();
        //定義一個最小標識
        minwidth = useWidth / 10;
        mBigOval = new RectF(minwidth, minwidth, minwidth*9, minwidth*9);
        //繪制背景
        canvas.drawColor(Color.WHITE);
        canvas.drawRect(mBigOval, mFramePaint);
        canvas.drawArc(mBigOval, mStart, mSweep, true, mPaint);


        mSweep += SWEEP_INC;
        if (mSweep > 360) {
            mSweep -= 360;
        }
        //刷新View
        invalidate();
    }
}

到此這篇關于Android自定義view之利用drawArc方法實現(xiàn)動態(tài)效果的文章就介紹到這了,更多相關Android自定義view實現(xiàn)動態(tài)效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android使用ListView實現(xiàn)滾輪的動畫效果實例

    Android使用ListView實現(xiàn)滾輪的動畫效果實例

    這篇文章主要介紹了Android使用ListView實現(xiàn)滾輪的動畫效果實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 分析CmProcess跨進程通信的實現(xiàn)

    分析CmProcess跨進程通信的實現(xiàn)

    CmProcess是Android一個跨進程通信框架,無需進行bindService()操作,不用定義Service,也不需要定義aidl。 支持IPC級的 Callback,并且支持跨進程的事件總線,可同步獲取服務,采用面向接口方式進行服務注冊與調(diào)用,服務調(diào)用方和使用者完全解耦
    2021-06-06
  • 解析在Android中為TextView增加自定義HTML標簽的實現(xiàn)方法

    解析在Android中為TextView增加自定義HTML標簽的實現(xiàn)方法

    本篇文章是對在Android中為TextView增加自定義HTML標簽的方法進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05
  • 如何利用Android仿微博正文鏈接交互效果

    如何利用Android仿微博正文鏈接交互效果

    最近在開發(fā)中遇到了各種坑,所以分享一下,希望能給大家貢獻點經(jīng)驗,下面這篇文章主要給大家介紹了關于如何利用Android仿微博正文鏈接交互效果的相關資料,需要的朋友可以參考下
    2022-04-04
  • Android SeekBar實現(xiàn)禁止滑動

    Android SeekBar實現(xiàn)禁止滑動

    這篇文章主要為大家詳細介紹了Android SeekBar實現(xiàn)禁止滑動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Android 屬性動畫ValueAnimator與插值器詳解

    Android 屬性動畫ValueAnimator與插值器詳解

    這篇文章主要介紹了Android 屬性動畫ValueAnimator與插值器詳解的相關資料,需要的朋友可以參考下
    2017-05-05
  • TabLayout標題文字不顯示的解決操作

    TabLayout標題文字不顯示的解決操作

    這篇文章主要介紹了TabLayout標題文字不顯示的解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Flutter插件開發(fā)之HmsScanKit實現(xiàn)示例詳解

    Flutter插件開發(fā)之HmsScanKit實現(xiàn)示例詳解

    這篇文章主要為大家介紹了Flutter插件開發(fā)之HmsScanKit實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • java實現(xiàn)靜默安裝apk

    java實現(xiàn)靜默安裝apk

    本文給大家分享的是如何實現(xiàn)偷偷的把一個安卓apk應用安裝到手機上,而且不顯示確認框,主要是通過反射來實現(xiàn),好了,小伙伴們仔細看下代碼吧,有需要的小伙伴可以參考下。
    2015-04-04
  • Android 自定義view仿支付寶咻一咻功能

    Android 自定義view仿支付寶咻一咻功能

    支付寶上有一個咻一咻的功能,就是點擊圖片后四周有水波紋的這種效果,今天就通過本文給大家分享實現(xiàn)此功能的思路及實例代碼,一起看看吧
    2016-12-12

最新評論