android 动态添加颜色,Android绘制一个三角形并且可动态改变颜色
方法一:
這種方法的三角形角度沒法控制,因為其實是矩形旋轉。
android:fromDegrees="45"
android:pivotX="135%"
android:pivotY="15%">
android:width="16dp"
android:height="16dp" />
然后將此xml設置為控件的background,在代碼中,如下使用:
LayerDrawable layerDrawable = (LayerDrawable) view.getBackground();
GradientDrawable drawable = (GradientDrawable)layerDrawable.getDrawable(0);
drawable.setColor(mainColor);
注意:當xml使用的是標簽,代碼中可直接
GradientDrawable drawable = (GradientDrawable)view.getBackground();
而當使用的是layer-list時,需要先使用LayerDrawable,然后要用第幾個item,就getDrawable(i); i為shape的順序
方法二:
使用SVG,android5.0以上開始支持SVG,也有兼容包支持以前的版本,或者使用第三方開源庫(svg-android,lottio)
使用方法就是DrawableCompat.setTint
關于SVG的生成與動畫,
VectorDrawableCompat vectorDrawableCompat = VectorDrawableCompat.create(getResources(), R.drawable.ic_home_black_24dp, getTheme());
//你需要改變的顏色
vectorDrawableCompat.setTint(getResources().getColor(R.color.color_blue));
YourImageView.setImageDrawable(vectorDrawableCompat)
方法三:
自定義View,Canvas繪制,這種比較自由,也最簡單,簡單的圖形還是用這個比較好。
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
p.setColor(Color.BLACK);
//實例化路徑
Path path = new Path();
path.moveTo(80, 200);// 此點為多邊形的起點
path.lineTo(120, 250);
path.lineTo(80, 250);
path.close(); // 使這些點構成封閉的多邊形
canvas.drawPath(path, p);
}
然后在你的布局文件中直接使用,預覽沒有效果,需要先build一下工程。
參考鏈接:
Android 通過 shape 實現三角形氣泡效果
Android自定義控件提供顏色屬性動態改變控件顏色
Android svg 繪制三角形
代碼動態改變SVG矢量圖顏色
SVG-Android開源庫
Android 中使用 SVG 的一個坑
Android繪圖機制
總結
以上是生活随笔為你收集整理的android 动态添加颜色,Android绘制一个三角形并且可动态改变颜色的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json模拟数据怎么用_在使用axios
- 下一篇: java 反射执行语句_JAVA反射机制