ym—— Android 5.0學習之Tinting和Clipping,androidtinting
前言
Android 5.0的知識點講完,下一篇要給大家帶來一個綜合例子的Demo,以及談談我對Android 5.0的看法。
有人肯定會想為什麼不是每一篇博文帶一個demo,我覺得無論學習什麼東西都需要自己去實踐,所以我沒有提供Demo,想先讓大家自己去按照我寫的博文步驟去實現這個,在實現的過程中會遇到困難,然後自己去尋找解決方案,最後自己做出來,這樣學習到的東西才能讓我們印象深刻。
Drawable Tinting(著色)
設定 ImageView 的 android:tint 屬性,可以達到以下效果:
layout:
<ImageView android:layout_width="100dp" android:layout_height="100dp" android:elevation="1dip" android:layout_gravity="center" android:src="@drawable/ic_launcher" /> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:elevation="1dip" android:layout_gravity="center" android:src="@drawable/ic_launcher" android:tint="@android:color/holo_red_dark" />
不僅可以設定tint還可以設定tintMode,分別設定不同的mode效果如下:
srceen
multiply
add
src_atop/src_in/src_over
Clipping Views(裁剪視圖)
首先我們layout,設定兩個正方形的TextView
<TextView android:id="@+id/tv_1" android:layout_width="100dp" android:layout_height="100dp" android:elevation="1dip" android:layout_gravity="center" /> <TextView android:id="@+id/tv_2" android:layout_width="100dp" android:layout_height="100dp" android:elevation="1dip" android:layout_gravity="center" />
然後我們將它們兩分別裁剪成圓角正方形和圓形:
<span style="white-space:pre"></span>v1 = findViewById(R.id.tv_1); v2 = findViewById(R.id.tv_2); ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 10); } }; ViewOutlineProvider viewOutlineProvider1 = new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), view.getHeight() / 2); } }; v1.setOutlineProvider(viewOutlineProvider); v2.setOutlineProvider(viewOutlineProvider1);
效果如下: