Android 自定義View之3D骰子旋轉

你能夠指定立方體中每一面骰子的點數,顏色和背景,同時也能夠指定執行的動畫時間和動畫插值器java

更多有趣的view

screenshot1.gif

screenshot2.gif

screenshot3.gif


使用

在根目錄的build.gradle添加這一句代碼:android

allprojects {
    repositories {
        //...
        maven { url 'https://jitpack.io' }
    }
}
複製代碼

在app目錄下的build.gradle添加依賴使用:git

dependencies {
    implementation 'com.github.samlss:DiceLoadingView:1.0'
}

複製代碼

在開始介紹DiceLoadingView以前,先看一下骰子即DeiceView的組成github

DiceView

在DiceLoadingView中應用的骰子viewbash

如下爲效果圖:
app

screenshot4.png

使用

佈局中:maven

<com.iigo.library.DiceView
            android:layout_marginTop="10dp"
            app:number="one"
            app:bgColor="@android:color/white"
            app:borderColor="@color/colorPrimary"
            app:pointColor="@color/colorPrimary"
            android:layout_width="50dp"
            android:layout_height="50dp" />
複製代碼

代碼:ide

diceView.setNumber(2); //設置骰子點數,必須爲1-6
diceView.setPointColor(Color.RED); //設置點的顏色
diceView.setBgColor(Color.RED); //設置背景顏色
diceView.setBorderColor(Color.RED); //設置邊界顏色
複製代碼

屬性說明:佈局

開始描述效果圖以前,先看一張說明圖:gradle

description2.png

attr description
number 骰子點數 one(1), two(2), three(3), four(4), five(5), six(6)
pointColor 點的顏色
bgColor 背景顏色
borderColor 邊界顏色

DiceLoadingView

使用

佈局中使用:

<com.iigo.library.DiceLoadingView
                    android:id="@+id/dlv_loading1"
                    app:animDuration="2000"
                    app:animInterpolator="AccelerateDecelerateInterpolator"
                    app:firstSideDiceNumber="1"
                    app:firstSideDicePointColor="@color/colorPrimary"
                    app:firstSideDiceBgColor="@android:color/white"
                    app:firstSideDiceBorderColor="@color/colorPrimary"
                    app:secondSideDiceNumber="2"
                    app:secondSideDicePointColor="@android:color/holo_orange_dark"
                    app:secondSideDiceBgColor="@android:color/white"
                    app:secondSideDiceBorderColor="@android:color/holo_orange_dark"
                    app:thirdSideDiceNumber="3"
                    app:thirdSideDicePointColor="@android:color/holo_red_dark"
                    app:thirdSideDiceBgColor="@android:color/white"
                    app:thirdSideDiceBorderColor="@android:color/holo_red_dark"
                    app:fourthSideDiceNumber="4"
                    app:fourthSideDiceBgColor="@android:color/white"
                    app:fourthSideDiceBorderColor="@android:color/holo_green_dark"
                    app:fourthSideDicePointColor="@android:color/holo_green_dark"
                    android:layout_width="50dp"
                    android:layout_height="50dp" />

複製代碼

代碼中使用:

diceLoadingView.start(); //開始動畫
diceLoadingView.stop(); //中止動畫
diceLoadingView.pause(); //暫停動畫
diceLoadingView.resume(); //恢復動畫
diceLoadingView.release(); //不須要使用該loading view的時候可手動釋放,例如在activity的ondestroy()中

diceLoadingView.setDuration(3000); //設置動畫時間
diceLoadingView.setInterpolator(new AnticipateOvershootInterpolator()); //設置動畫插值器
diceLoadingView.setFirstSideDiceNumber(2); //設置第一面骰子點數(1-6)
diceLoadingView.setFirstSidePointColor(Color.parseColor("#FF7D81")); //設置第一面骰子點的顏色
diceLoadingView.setFirstSideDiceBgColor(Color.WHITE); //設置第一面骰子背景顏色
diceLoadingView.setFirstSideDiceBorderColor(Color.GRAY); //設置第一面骰子邊界顏色

diceLoadingView.setSecondSideDiceNumber(3); //設置第二面骰子點數(1-6)
diceLoadingView.setSecondSidePointColor(Color.BLUE); //設置第二面骰子點的顏色
diceLoadingView.setSecondSideDiceBgColor(Color.WHITE); //設置第二面骰子背景顏色
diceLoadingView.setSecondSideDiceBorderColor(Color.BLUE); //設置第二面骰子邊界顏色

diceLoadingView.setThirdSideDiceNumber(4); //設置第三面骰子點數(1-6)
diceLoadingView.setThirdSidePointColor(Color.GREEN); //設置第三面骰子點的顏色
diceLoadingView.setThirdSideDiceBgColor(Color.WHITE); //設置第三面骰子背景顏色
diceLoadingView.setThirdSideDiceBorderColor(Color.GREEN); //設置第三面骰子邊界顏色

diceLoadingView.setFourthSideDiceNumber(5); //設置第四面骰子點數(1-6)
diceLoadingView.setFourthSidePointColor(Color.RED); //設置第四面骰子點的顏色
diceLoadingView.setFourthSideDiceBgColor(Color.WHITE); //設置第四面骰子背景顏色
diceLoadingView.setFourthSideDiceBorderColor(Color.RED); //設置第四面骰子邊界顏色
複製代碼

屬性說明:

開始描述效果圖以前,先看兩張張說明圖:

針對立方體而言

description1.png

針對每個骰子面而言:

description2.png

attr description
animDuration 動畫時間
animInterpolator 動畫加速器
firstSideDiceNumber 第一面骰子點數(1-6)
firstSideDicePointColor 第一面骰子點的顏色
firstSideDiceBgColor 第一面骰子背景顏色
firstSideDiceBorderColor 第一面骰子邊界顏色
secondSideDiceNumber 第二面骰子點數(1-6)
secondSideDicePointColor 第二面骰子點的顏色
secondSideDiceBgColor 第二面骰子背景顏色
secondSideDiceBorderColor 第二面骰子邊界顏色
thirdSideDiceNumber 第三面骰子點數(1-6)
thirdSideDicePointColor 第三面骰子點的顏色
thirdSideDiceBgColor 第三面骰子背景顏色
thirdSideDiceBorderColor 第三面骰子邊界顏色
fourthSideDiceNumber 第四面骰子點數(1-6)
fourthSideDicePointColor 第四面骰子點的顏色
fourthSideDiceBgColor 第四面骰子背景顏色
fourthSideDiceBorderColor 第四面骰子邊界顏色
[Github](https://github.com/samlss/DiceLoadingView)
相關文章
相關標籤/搜索