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布局檔案中需要...