咨詢熱線:023-63853373

24小時熱線:13372636650

新聞中心

首頁

產品方案

服務項目

開發案例
新聞資訊
聯系我們

【Android】圓形揭露動畫

2020/02/09  來源:樂潮信息

在Android系統中提供了一種圓形的揭露動畫,具體表現為一個view以圓形的形式展開、揭示。所謂揭露動畫,就是一種用于 View 之間,甚至界面之間的特殊過渡動畫效果。通過ViewAnimationUtils.createCircularReveal 方法可以創建一個RevealAnimator動畫,代碼如下所示:

ViewAnimationUtils.createCircularReveal(

                view,

                x,//動畫開始中心點X

                y,//動畫開始中心點Y

                startR,//開始半徑

                endR);//結束半徑

如上,各參數的意思已做了注釋。

接下來通過一個demo來更好的理解它的用法和效果:

首先定義一個布局文件,顯示兩張圖片:

<LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:orientation="vertical">

        <ImageView

            android:id="@+id/img_1"

            android:layout_width="100dp"

            android:layout_height="100dp"

            android:src="@drawable/test" />

 

        <ImageView

            android:id="@+id/img_2"

            android:layout_width="100dp"

            android:layout_height="100dp"

            android:layout_marginTop="30dp"

            android:src="@drawable/test" />

    </LinearLayout>

然后為這兩張圖片添加點擊事件:

 public void onViewClicked2(View view) {

        switch (view.getId()) {

            case R.id.img_1:

                Animator animator = ViewAnimationUtils.createCircularReveal(

                        img1,

                        img1.getWidth() / 2,//動畫開始中心點X

                        img1.getHeight() / 2,//動畫開始中心點Y

                        0,//開始半徑

                        img1.getWidth());//結束半徑

                animator.setInterpolator(new AccelerateDecelerateInterpolator());

                animator.setDuration(1500);

                animator.start();

                break;

            case R.id.img_2:

                Animator animator2 = ViewAnimationUtils.createCircularReveal(

                        img2,

                        0,

                        0,

                        0,

                        (float) Math.hypot(img2.getWidth(), img2.getHeight()));//根號下x的平方+y的平方

                animator2.setInterpolator(new AccelerateDecelerateInterpolator());

                animator2.setDuration(1500);

                animator2.start();

                break;

        }

    }

運行后點擊圖片我們可以看到如下效果:

初始效果:

點擊第一張圖:



點擊第二張圖:

 

我們可以根據自己需要的效果來設置動畫開始的中心點,以及開始和結束的半徑,來實現我們想要的效果。

不光如此,我們還可以為activity的根部局設置揭露動畫來實現activity的轉場動畫。

在新activity的onCreate方法中設置:

llContent.post(new Runnable() {

            @Override

            public void run() {

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

                    Animator animator =  createCircularReveal(llContent,llContent.getWidth()/2,llContent.getHeight()/2,

                            0, (float) Math.hypot(llContent.getWidth(),llContent.getHeight()),2000);

                    animator.start();

                }

            }

        });

 

其中llcontent是根部局,動畫開始中心是布局的中心,動畫開始半徑是0,結束半徑是對角線長度的一半,動畫時間設置的是2秒,這樣在進入activity的時候就可以看到整個布局是由中心向外以圓形的方式展開的。值得注意的是,該動畫效果是從Android5.X開始添加的,在使用時我們要注意版本的控制。

 

樂潮信息www.adihindu.com原創,引用請表明出處

開發三級分銷系統APP的好處

重慶APP開發樂潮科技認為:三級分銷系統是各路商家的最愛,這句話說的絕對沒毛病。

手機app定制開發要根據用戶市場來

重慶app開發公司樂潮科技認為,隨著移動互聯網技術的不斷發展,手機app開發現在已經

重慶APP開發多少錢

根據app應用軟件開發的難易程度可以將重慶app開發價格大致分為一下幾類

點擊我更換圖片

公司地址:

重慶市渝北區冉家壩時光城寫字樓

聯系方式:

023-63853373

13372636650(24h熱線)

重慶市渝北區冉家壩時光城寫字樓

? 2020 樂潮信息

渝ICP備15006414號-2??????渝公網安備 50011202502110號???