自定義View 實現一道亮光閃過

2021-10-01 15:23:11 字數 2184 閱讀 4706

package com.example.lightline;

import android.animation.valueanimator;

import android.content.context;

import android.graphics.canvas;

import android.graphics.lineargradient;

import android.graphics.matrix;

import android.graphics.paint;

import android.graphics.porterduff;

import android.graphics.porterduffxfermode;

import android.graphics.rect;

import android.graphics.rectf;

import android.graphics.shader;

import android.util.attributeset;

import android.util.log;

import android.view.view;

import android.view.viewtreeobserver;

import androidx.annotation.nullable;

public class lightin**iew extends view

public lightin**iew(context context, @nullable attributeset attrs)

public lightin**iew(context context, @nullable attributeset attrs, int defstyleattr)

private void init()

public void setautorun(boolean autorun)

// onsizechanged 這個方法肯定在onmeasure 之後,因為這個方法可以獲取到真正的寬高,

@override

protected void onsizechanged(int w, int h, int oldw, int oldh) ,

new float,

shader.tilemode.repeat);// 以邊緣色調繪製剩餘的部分

// 給paint 新增著色器

mpaint.setshader(mgradient);

// setlayertype(view.layer_type_software, null);//關掉硬體加速

//// porterduff.mode.dst 丟棄原畫素,使目標保持不變,這裡的目標指的是,lightview 的背景

mpaint.setxfermode(new porterduffxfermode(porterduff.mode.darken));

mgradientmatrix = new matrix();

// 這個是控制繪製時最開始的 偏移量,

// mgradientmatrix.settranslate(-1 *mviewwidth , mviewheight);

mgradient.setlocalmatrix(mgradientmatrix);

rect.set(0, 0, w, h);}}

}// @override

protected void ondraw(canvas canvas)

}private void initgradientanimator()

//❸ 設定線性變化的matrix

if (mgradient != null)

//❹ 重繪

invalidate();

// if (v >= 1)

}});

if (autorun)

}});}}

//停止動畫

public void stopanimation()

}//開始動畫

public void startanimation()

}}

自定義View(一)

對於剛開始學自定義渣渣的我,對自定義還是挺恐慌的,不過上手後就好了。先總結下自定義view的步驟 1 自定義view的屬性 2 在view的構造方法中獲得我們自定義的屬性 3 繪製機制 重寫onmesure 按需求使用 重寫onsizechange 重寫onlayout 按需求使用 重寫ondraw...

自定義view(一)

1.什麼是自定義控制項?在android系統中,用系統的自帶控制項重新組合或者自定義類繼承view或者自定義繼承viewgroup,實現特定的ui效果。2.為什麼要學習自定義控制項?1 因為系統的某乙個控制項,在不同的裝置效果不一樣,為了達到效果一樣,就得用自定義控制項。2 為了整個軟體在不同裝置風...

Android自定義View實現

android自定義view實現很簡單 繼承view或者其子類,重寫建構函式 ondraw,onmeasure 等函式,根據繼承的類的不同可能有所不同。如果自定義的view需要有自定義的屬性,需要在values下建立attrs.xml。在其中定義你的屬性。在使用到自定義view的xml布局檔案中需要...