亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

一、準(zhǔn)備

在這之前呢,還是得簡(jiǎn)單描述一下自定義view中的一些準(zhǔn)備工作

1.測(cè)量

 @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.自定義屬性

這個(gè)案例因?yàn)闀r(shí)間關(guān)系就不自定義屬性了,更多請(qǐng)參考本人以前的文章:Android自定義view之圍棋動(dòng)畫

二、關(guān)鍵方法介紹

drawArc

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

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

 三.實(shí)現(xiàn)

 1.思路

通過(guò)改變sweepAngle(上述方法第三個(gè)參數(shù))的值,然后刷新View來(lái)達(dá)到效果

代碼如下:

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

2.效果圖

請(qǐng)?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();
        //定義一個(gè)最小標(biāo)識(shí)
        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();
    }
}

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

相關(guān)文章

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

    Android使用ListView實(shí)現(xiàn)滾輪的動(dòng)畫效果實(shí)例

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

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

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

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

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

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

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

    Android SeekBar實(shí)現(xiàn)禁止滑動(dòng)

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

    Android 屬性動(dòng)畫ValueAnimator與插值器詳解

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

    TabLayout標(biāo)題文字不顯示的解決操作

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

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

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

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

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

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

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

最新評(píng)論