1. 程式人生 > >Android點贊效果的實現

Android點贊效果的實現

先看下點讚的效果圖

首先新增依賴

api 'com.sackcentury:shinebutton:0.2.0'

xml佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="100dp"
        android:gravity="center">
    <com.sackcentury.shinebuttonlib.ShineButton
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerInParent="true"
        android:src="@android:color/darker_gray"
        android:id="@+id/bt_like"
        app:btn_color="@android:color/darker_gray"
        app:btn_fill_color="#FF6666"
        app:allow_random_color="false"
        app:enable_flashing="false"
        app:big_shine_color="#FF6666"
        app:click_animation_duration="200"
        app:shine_animation_duration="1500"
        app:shine_turn_angle="10"
        app:small_shine_offset_angle="20"
        app:shine_distance_multiple="1.5"
        app:small_shine_color="#CC9999"
        app:shine_count="8"
        app:siShape="@raw/like"/>

        <com.sackcentury.shinebuttonlib.ShineButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerInParent="true"
            android:layout_marginLeft="20dp"
            android:src="@android:color/darker_gray"
            android:id="@+id/bt_smile"
            app:btn_color="@android:color/darker_gray"
            app:btn_fill_color="#F44336"
            app:allow_random_color="true"
            app:siShape="@raw/smile"/>

        <com.sackcentury.shinebuttonlib.ShineButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginLeft="20dp"
            android:layout_centerInParent="true"
            android:id="@+id/bt_star"
            app:btn_color="@android:color/darker_gray"
            app:btn_fill_color="#996699"
            app:enable_flashing="true"
            app:shine_size="40dp"
            app:siShape="@raw/star"/>
        <com.sackcentury.shinebuttonlib.ShineButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginLeft="20dp"
            android:layout_centerInParent="true"
            android:id="@+id/bt_heart"
            app:btn_color="@android:color/darker_gray"
            app:btn_fill_color="#f26d7d"
            app:siShape="@raw/heart"
            android:elevation="10dp" />
    </LinearLayout>
</LinearLayout>

看下屬性說明:

屬性 Java方法 描述
siShape void setShapeResource(int) 設定原始資源(png)
btn_color void setBtnColor(int) 設定原點顏色
btn_fill_color void setBtnFillColor(int) 單擊後設置填充顏色
allow_random_color void setAllowRandomColor(boolean) 允許光澤顏色隨機
shine_animation_duration void setAnimDuration(int) 設定光澤動畫持續時間
big_shine_color void setBigShineColor (int) 設定大光澤的顏色
click_animation_duration void setClickAnimDuration(int) 設定單擊動畫持續時間
enable_flashing void enabaleFlashing (boolean) 啟用閃光效果
shine_count void setShineCount (int) 按鈕周圍設定閃耀計數
shine_distance_multiple void setShineDistanceMultiple (float) 設定距離按鈕的多個距離
shine_turn_angle void setShineTurnAngle(float) 設定光澤的轉角
shine_size void setShineSize (int) 按畫素設定光澤大小
small_shine_color void setSmallShineColor(int) 設定小亮澤顏色
small_shine_offset_angle void setSmallShineOffAngle(float) 將小光澤的角度偏移設定為大光澤

 

初始化控制元件: 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ShineButton btLike = (ShineButton) findViewById(R.id.bt_like);
        btLike.init(this);

        ShineButton btSmile = (ShineButton) findViewById(R.id.bt_smile);
        btSmile.init(this);

        ShineButton btHeart = (ShineButton) findViewById(R.id.bt_heart);
        btHeart.init(this);

        ShineButton btStart = (ShineButton) findViewById(R.id.bt_star);
        btStart.init(this);
    }
}

github連結:

https://github.com/ChadCSong/ShineButton

另外github上一些優秀的開源專案,純乾貨分享連結:

https://blog.csdn.net/yun382657988/article/details/83303147