兩種方式實現(xiàn)類似水波擴散效果,先上圖為敬
自定義view實現(xiàn)
思路分析:通過canvas畫圓,每次改變圓半徑和透明度,當(dāng)半徑達到一定程度,再次從中心開始繪圓,達到不同層級的效果,通過不斷繪制達到view擴散效果
private Paint centerPaint; //中心圓paint private int radius = 100; //中心圓半徑 private Paint spreadPaint; //擴散圓paint private float centerX;//圓心x private float centerY;//圓心y private int distance = 5; //每次圓遞增間距 private int maxRadius = 80; //大圓半徑 private int delayMilliseconds = 33;//擴散延遲間隔,越大擴散越慢 private ListspreadRadius = new ArrayList<>();//擴散圓層級數(shù),元素為擴散的距離 private List alphas = new ArrayList<>();//對應(yīng)每層圓的透明度