Android Material Design(6) CircularReveal圓形擴散動畫的使用
阿新 • • 發佈:2019-01-02
效果圖:
專案依賴:
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:cardview-v7:23.2.1'
佈局檔案:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.imgod.md_5.MainActivity"> <android.support.v7.widget.CardView android:id="@+id/cardview_1" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="10dp" android:colorControlHighlight="#ff6600" app:cardElevation="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="@string/hello" android:textColor="#ff6600" /> </android.support.v7.widget.CardView> </RelativeLayout>
Activity:
package com.example.imgod.md_5; import android.animation.Animator; import android.os.Build; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.CardView; import android.view.View; import android.view.ViewAnimationUtils; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private CardView cardview_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initEvent(); } private void initEvent() { cardview_1.setOnClickListener(this); } private void initView() { cardview_1 = (CardView) findViewById(R.id.cardview_1); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.cardview_1: startAnimation(cardview_1); break; } } private void startAnimation(View view) { //因為CircularReveal動畫是api21之後才有的,所以加個判斷語句,免得崩潰 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int cicular_R = view.getHeight() / 2 > view.getWidth() / 2 ? view.getHeight() / 2 : view.getWidth() / 2; Animator animator = ViewAnimationUtils.createCircularReveal(view, (int) view.getWidth() / 2, (int) view.getHeight() / 2, 0, cicular_R); animator.setDuration(1000); animator.start(); } else { Toast.makeText(this, "SDK版本太低,請升級", Toast.LENGTH_SHORT).show(); } } }
原始碼非常簡單,就是通過createCircularReveal方法根據5個引數來建立一個RevealAnimator動畫物件。 這五個引數分別是: view 操作的檢視 centerX 動畫開始的中心點X centerY 動畫開始的中心點Y startRadius 動畫開始半徑 startRadius 動畫結束半徑 不過網上說android:colorControlHighlight:設定波紋顏色
這個屬性是設定波紋顏色的.但是我設定了卻沒有效果.百思不得姐,有知道的希望不吝賜教下哈.感激不盡