Browse Source

星星弹出动画;极光推送

czq 2 years ago
parent
commit
b687a6997c

+ 1 - 1
.idea/misc.xml

@@ -13,7 +13,7 @@
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_quxian.xml" value="0.13645833333333332" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_quxian.xml" value="0.13645833333333332" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_sound.xml" value="0.1234375" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_sound.xml" value="0.1234375" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_spine.xml" value="0.13333333333333333" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_spine.xml" value="0.13333333333333333" />
-        <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_stars.xml" value="0.1" />
+        <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_stars.xml" value="0.12" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_test.xml" value="0.18" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_test.xml" value="0.18" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_test2.xml" value="0.17" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_test2.xml" value="0.17" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_view.xml" value="0.25" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_view.xml" value="0.25" />

+ 19 - 21
app/build.gradle

@@ -9,12 +9,27 @@ android {
 
 
     defaultConfig {
     defaultConfig {
         applicationId "com.xunao.effectdemo"
         applicationId "com.xunao.effectdemo"
-        minSdkVersion 17
+        minSdkVersion 21
         targetSdkVersion 30
         targetSdkVersion 30
         versionCode 1
         versionCode 1
         versionName "1.0"
         versionName "1.0"
 
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+
+        manifestPlaceholders = [
+                JPUSH_PKGNAME : applicationId,
+                JPUSH_APPKEY : "ecffb33772bcb5b0a447c70b", //JPush 上注册的包名对应的 Appkey.
+                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
+//            MEIZU_APPKEY : "MZ-魅族的APPKEY",
+//            MEIZU_APPID : "MZ-魅族的APPID",
+//            XIAOMI_APPID : "MI-小米的APPID",
+//            XIAOMI_APPKEY : "MI-小米的APPKEY",
+//            OPPO_APPKEY : "OP-oppo的APPKEY",
+//            OPPO_APPID : "OP-oppo的APPID",
+//            OPPO_APPSECRET : "OP-oppo的APPSECRET",
+//            VIVO_APPKEY : "vivo的APPKEY",
+//            VIVO_APPID : "vivo的APPID"
+        ]
     }
     }
 
 
     buildTypes {
     buildTypes {
@@ -67,26 +82,9 @@ dependencies {
     implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
     implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
     implementation 'com.airbnb.android:lottie:5.2.0'
     implementation 'com.airbnb.android:lottie:5.2.0'
     implementation 'com.github.JadeKkang:like_view:v1.0'
     implementation 'com.github.JadeKkang:like_view:v1.0'
-//    implementation project(':libgdx_spine')
 
 
-//    implementation  'com.umeng.umsdk:common:9.4.7'// 必选
-//    implementation  'com.umeng.umsdk:asms:1.4.0'// 必选
-//
-//    implementation  'com.umeng.umsdk:uverify:2.5.1'// 必选
-//    implementation  'com.umeng.umsdk:uverify-main:2.0.3'// 必选
-//    implementation  'com.umeng.umsdk:uverify-logger:2.0.3'// 必选
-//    implementation  'com.umeng.umsdk:uverify-crashshield:2.0.3'// 必选
-//
-//
-//    implementation 'com.umeng.umsdk:utdid:1.5.2.1'
-//
-//    api 'com.umeng.umsdk:push:6.3.3'
-//    implementation 'com.umeng.umsdk:alicloud-httpdns:1.3.2.3'
-//    implementation 'com.umeng.umsdk:alicloud-utils:2.0.0'
-//    implementation 'com.umeng.umsdk:alicloud_beacon:1.0.5'
-//    api 'com.umeng.umsdk:agoo-accs:3.4.2.7'
-//    implementation 'com.umeng.umsdk:agoo_aranger:1.0.6'
-//    implementation 'com.umeng.umsdk:agoo_networksdk:3.5.8'
-//    implementation 'com.umeng.umsdk:agoo_tnet4android:3.1.14.10'
+    implementation 'cn.jiguang.sdk:jcore:3.3.0'  // 此处以JCore 3.3.0 版本为例。
+    implementation 'cn.jiguang.sdk:jpush:4.7.2'  // 此处以JPush 4.7.2 版本为例
+
 
 
 }
 }

+ 43 - 1
app/src/main/AndroidManifest.xml

@@ -7,12 +7,23 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
 
 
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 6.0以上需要加的额外权限 -->
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
     <application
     <application
+        android:name=".App"
         android:allowBackup="true"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:supportsRtl="true"
+        android:usesCleartextTraffic="true"
         android:theme="@style/AppTheme">
         android:theme="@style/AppTheme">
 
 
         <activity android:name=".activity.MainActivity">
         <activity android:name=".activity.MainActivity">
@@ -48,8 +59,39 @@
         <activity android:name=".activity.LottieActivity"/>
         <activity android:name=".activity.LottieActivity"/>
         <activity android:name=".activity.CongratulationsActivity"/>
         <activity android:name=".activity.CongratulationsActivity"/>
         <activity android:name=".activity.SoundActivity"/>
         <activity android:name=".activity.SoundActivity"/>
-        <activity android:name=".activity.StarsActivity"/>
+        <activity android:name=".activity.StarsActivity"
+            android:screenOrientation="landscape"/>
 
 
+        <service android:name=".receiver.MyService"
+            android:enabled="true"
+            android:exported="false"
+            android:process=":pushcore">
+            <intent-filter>
+                <action android:name="cn.jiguang.user.service.action" />
+            </intent-filter>
+        </service>
+        <receiver
+            android:name=".receiver.PushMessageReceiver"
+            android:enabled="true"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
+                <category android:name="com.xunao.effectdemo"/>
+            </intent-filter>
+        </receiver>
+        <provider
+            android:name="cn.jiguang.union.ads.service.JAdFileProvider"
+            android:authorities="${applicationId}.JAdFileProvider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/jpush_file_paths" />
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.FileProvider" />
+                <category android:name="${applicationId}" />
+            </intent-filter>
+        </provider>
     </application>
     </application>
 
 
 </manifest>
 </manifest>

+ 12 - 0
app/src/main/java/com/xunao/effectdemo/App.java

@@ -1,6 +1,9 @@
 package com.xunao.effectdemo;
 package com.xunao.effectdemo;
 
 
 import android.app.Application;
 import android.app.Application;
+import android.util.Log;
+
+import cn.jpush.android.api.JPushInterface;
 
 
 /**
 /**
  * author : 程中强
  * author : 程中强
@@ -11,10 +14,19 @@ import android.app.Application;
  */
  */
 public class App extends Application {
 public class App extends Application {
 
 
+	public static App app;
+
+	public static App getInstance() {
+		return app;
+	}
 	@Override
 	@Override
 	public void onCreate() {
 	public void onCreate() {
 		super.onCreate();
 		super.onCreate();
 		initUmengSDK();
 		initUmengSDK();
+		app = this;
+		JPushInterface.setDebugMode(true);
+		JPushInterface.init(this);
+
 	}
 	}
 
 
 	/**
 	/**

+ 0 - 1
app/src/main/java/com/xunao/effectdemo/activity/LottieActivity.kt

@@ -23,7 +23,6 @@ class LottieActivity : Activity() {
             animation_view.clearAnimation()
             animation_view.clearAnimation()
             animation_view.setAnimation("walk.json")
             animation_view.setAnimation("walk.json")
             animation_view.repeatCount = 4
             animation_view.repeatCount = 4
-            animation_view.loop(true)
             animation_view.playAnimation()
             animation_view.playAnimation()
         }
         }
 
 

+ 85 - 0
app/src/main/java/com/xunao/effectdemo/activity/StarsActivity.java

@@ -2,11 +2,24 @@ package com.xunao.effectdemo.activity;
 
 
 import android.app.Activity;
 import android.app.Activity;
 import android.os.Bundle;
 import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.view.animation.ScaleAnimation;
+import android.view.animation.TranslateAnimation;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
 
 
 import androidx.annotation.Nullable;
 import androidx.annotation.Nullable;
 
 
 import com.airbnb.lottie.LottieAnimationView;
 import com.airbnb.lottie.LottieAnimationView;
+import com.xunao.effectdemo.App;
 import com.xunao.effectdemo.R;
 import com.xunao.effectdemo.R;
+import com.xunao.effectdemo.bean.World;
+
+import cn.jpush.android.api.JPushInterface;
 
 
 /**
 /**
  * author : 程中强
  * author : 程中强
@@ -18,6 +31,11 @@ import com.xunao.effectdemo.R;
 public class StarsActivity extends Activity {
 public class StarsActivity extends Activity {
 
 
 	LottieAnimationView animationView;
 	LottieAnimationView animationView;
+	private ImageView imv4,imv5,imv6;
+	private Animation mShowAction,animationBig;
+	private int i = 0;
+	private TextView tv;
+	private RelativeLayout rl;
 	@Override
 	@Override
 	protected void onCreate(@Nullable Bundle savedInstanceState) {
 	protected void onCreate(@Nullable Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
 		super.onCreate(savedInstanceState);
@@ -25,5 +43,72 @@ public class StarsActivity extends Activity {
 		animationView = findViewById(R.id.lottie_view);
 		animationView = findViewById(R.id.lottie_view);
 		animationView.setRepeatCount(0);
 		animationView.setRepeatCount(0);
 		animationView.setOnClickListener(v->animationView.playAnimation());
 		animationView.setOnClickListener(v->animationView.playAnimation());
+		tv = findViewById(R.id.tv_score);
+		imv4 = findViewById(R.id.imv_star_4);
+		imv5 = findViewById(R.id.imv_star_5);
+		imv6 = findViewById(R.id.imv_star_6);
+		rl = findViewById(R.id.rl_main);
+		startAnim(imv4,0);
+		startAnim(imv5,500);
+		startAnim(imv6,1000);
+		rl.setOnClickListener(v->{
+			startBig(imv4,0);
+			startBig(imv5,500);
+			startBig(imv6,1000);
+			Log.e("MyTag","id:"+ JPushInterface.getRegistrationID(App.getInstance()));
+		});
+
+	}
+
+	void startAnim(ImageView imv,int time){
+		imv.clearAnimation();
+		mShowAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
+				Animation.RELATIVE_TO_SELF, 6.0f, Animation.RELATIVE_TO_SELF, 0.0f);
+		mShowAction.setDuration(500);
+
+		mShowAction.setStartOffset(time);
+		mShowAction.setAnimationListener(new Animation.AnimationListener() {
+			@Override
+			public void onAnimationStart(Animation animation) {
+//				i++;
+			}
+
+			@Override
+			public void onAnimationEnd(Animation animation) {
+
+				i++;
+				tv.setText("+"+i);
+//				startBig(imv,time);
+			}
+
+			@Override
+			public void onAnimationRepeat(Animation animation) {
+
+			}
+		});
+		imv.startAnimation(mShowAction);
+	}
+
+	void startBig(ImageView imv,int time){
+
+		animationBig = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+		animationBig.setDuration(500);
+		animationBig.setStartOffset(time);
+		animationBig.setAnimationListener(new Animation.AnimationListener() {
+			@Override
+			public void onAnimationStart(Animation animation) {
+			}
+
+			@Override
+			public void onAnimationEnd(Animation animation) {
+				imv.clearAnimation();
+			}
+
+			@Override
+			public void onAnimationRepeat(Animation animation) {
+
+			}
+		});
+		imv.startAnimation(animationBig);
 	}
 	}
 }
 }

+ 14 - 0
app/src/main/java/com/xunao/effectdemo/receiver/MyService.java

@@ -0,0 +1,14 @@
+package com.xunao.effectdemo.receiver;
+
+import cn.jpush.android.service.JCommonService;
+
+/**
+ * author : 程中强
+ * e-mail : 740479946@qq.com
+ * date : 2022/8/2416:43
+ * desc :
+ * version: 1.0
+ */
+public class MyService extends JCommonService {
+
+}

+ 135 - 0
app/src/main/java/com/xunao/effectdemo/receiver/PushMessageReceiver.java

@@ -0,0 +1,135 @@
+package com.xunao.effectdemo.receiver;
+
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+import cn.jpush.android.api.CmdMessage;
+import cn.jpush.android.api.CustomMessage;
+import cn.jpush.android.api.JPushInterface;
+import cn.jpush.android.api.JPushMessage;
+import cn.jpush.android.api.NotificationMessage;
+import cn.jpush.android.service.JPushMessageReceiver;
+
+/**
+ * author : 程中强
+ * e-mail : 740479946@qq.com
+ * date : 2022/8/2416:42
+ * desc :
+ * version: 1.0
+ */
+public class PushMessageReceiver extends JPushMessageReceiver {
+	private static final String TAG = "PushMessageReceiver";
+
+	@Override
+	public void onMessage(Context context, CustomMessage customMessage) {
+		Log.e(TAG, "[onMessage] " + customMessage);
+		Intent intent = new Intent("com.jiguang.demo.message");
+		intent.putExtra("msg", customMessage.message);
+		context.sendBroadcast(intent);
+	}
+
+	@Override
+	public void onNotifyMessageOpened(Context context, NotificationMessage message) {
+		Log.e(TAG, "[onNotifyMessageOpened] " + message);
+		try{
+//			if (!EVApp.getInstance().hasLogin())
+//				return;
+//			//打开自定义的Activity
+//			Intent i = new Intent(context, MessageListActivity.class);
+//			Bundle bundle = new Bundle();
+//			bundle.putString(JPushInterface.EXTRA_NOTIFICATION_TITLE,message.notificationTitle);
+//			bundle.putString(JPushInterface.EXTRA_ALERT,message.notificationContent);
+//			i.putExtras(bundle);
+//			i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
+//			context.startActivity(i);
+		}catch (Throwable throwable){
+
+		}
+	}
+
+	@Override
+	public void onMultiActionClicked(Context context, Intent intent) {
+		Log.e(TAG, "[onMultiActionClicked] 用户点击了通知栏按钮");
+		String nActionExtra = intent.getExtras().getString(JPushInterface.EXTRA_NOTIFICATION_ACTION_EXTRA);
+
+		//开发者根据不同 Action 携带的 extra 字段来分配不同的动作。
+		if (nActionExtra == null) {
+			Log.d(TAG, "ACTION_NOTIFICATION_CLICK_ACTION nActionExtra is null");
+			return;
+		}
+		if (nActionExtra.equals("my_extra1")) {
+			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮一");
+		} else if (nActionExtra.equals("my_extra2")) {
+			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮二");
+		} else if (nActionExtra.equals("my_extra3")) {
+			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮三");
+		} else {
+			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮未定义");
+		}
+	}
+
+	@Override
+	public void onNotifyMessageArrived(Context context, NotificationMessage message) {
+		Log.e(TAG, "[onNotifyMessageArrived] " + message);
+//		if (AppUtils.isAppForeground()&&EVApp.getInstance().hasLogin()){
+//			JPushInterface.clearNotificationById(context, message.notificationId);
+//			Intent intent = new Intent(context, NoticeDialogActivity.class);
+//			intent.putExtra("title",message.notificationTitle);
+//			intent.putExtra("content",message.notificationContent);
+//			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
+//			context.startActivity(intent);
+//		}
+	}
+
+	@Override
+	public void onNotifyMessageDismiss(Context context, NotificationMessage message) {
+		Log.e(TAG, "[onNotifyMessageDismiss] " + message);
+	}
+
+	@Override
+	public void onRegister(Context context, String registrationId) {
+		Log.e(TAG, "[onRegister] " + registrationId);
+		Intent intent = new Intent("com.jiguang.demo.register");
+		context.sendBroadcast(intent);
+	}
+
+	@Override
+	public void onConnected(Context context, boolean isConnected) {
+		Log.e(TAG, "[onConnected] " + isConnected);
+	}
+
+	@Override
+	public void onCommandResult(Context context, CmdMessage cmdMessage) {
+		Log.e(TAG, "[onCommandResult] " + cmdMessage);
+	}
+
+	@Override
+	public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
+//        TagAliasOperatorHelper.getInstance().onTagOperatorResult(context,jPushMessage);
+		super.onTagOperatorResult(context, jPushMessage);
+	}
+
+	@Override
+	public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
+//        TagAliasOperatorHelper.getInstance().onCheckTagOperatorResult(context,jPushMessage);
+		super.onCheckTagOperatorResult(context, jPushMessage);
+	}
+
+	@Override
+	public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
+//        TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context,jPushMessage);
+		super.onAliasOperatorResult(context, jPushMessage);
+	}
+
+	@Override
+	public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
+//        TagAliasOperatorHelper.getInstance().onMobileNumberOperatorResult(context,jPushMessage);
+		super.onMobileNumberOperatorResult(context, jPushMessage);
+	}
+
+	@Override
+	public void onNotificationSettingsCheck(Context context, boolean isOn, int source) {
+		super.onNotificationSettingsCheck(context, isOn, source);
+		Log.e(TAG, "[onNotificationSettingsCheck] isOn:" + isOn + ",source:" + source);
+	}
+}

+ 11 - 10
app/src/main/res/anim/anim_big.xml

@@ -3,21 +3,22 @@
     android:fillAfter="false">
     android:fillAfter="false">
     <!-- Scale是Android的尺寸缩放动画,继承自基类Animation -->
     <!-- Scale是Android的尺寸缩放动画,继承自基类Animation -->
     <scale
     <scale
-        android:duration="1500"
+        android:duration="500"
         android:fromXScale="1"
         android:fromXScale="1"
         android:fromYScale="1"
         android:fromYScale="1"
         android:pivotX="50%"
         android:pivotX="50%"
         android:pivotY="50%"
         android:pivotY="50%"
-        android:startOffset="150"
+        android:startOffset="0"
         android:toXScale="1.2"
         android:toXScale="1.2"
         android:toYScale="1.2" />
         android:toYScale="1.2" />
-<!--    <scale-->
-<!--        android:duration="1500"-->
-<!--        android:fromXScale="1"-->
-<!--        android:fromYScale="1"-->
-<!--        android:pivotX="50%"-->
-<!--        android:pivotY="50%"-->
-<!--        android:toXScale="0.8"-->
-<!--        android:toYScale="0.8" />-->
+    <scale
+        android:duration="500"
+        android:fromXScale="1.2"
+        android:fromYScale="1.2"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:startOffset="0"
+        android:toXScale="1"
+        android:toYScale="1" />
 
 
 </set>
 </set>

+ 2 - 2
app/src/main/res/anim/anim_small.xml

@@ -3,7 +3,7 @@
     android:fillAfter="false">
     android:fillAfter="false">
     <!-- Scale是Android的尺寸缩放动画,继承自基类Animation -->
     <!-- Scale是Android的尺寸缩放动画,继承自基类Animation -->
     <scale
     <scale
-        android:duration="1500"
+        android:duration="500"
         android:fromXScale="1"
         android:fromXScale="1"
         android:fromYScale="1"
         android:fromYScale="1"
         android:pivotX="50%"
         android:pivotX="50%"
@@ -11,7 +11,7 @@
         android:toXScale="0.8"
         android:toXScale="0.8"
         android:toYScale="0.8" />
         android:toYScale="0.8" />
     <scale
     <scale
-        android:duration="1500"
+        android:duration="500"
         android:fromXScale="1"
         android:fromXScale="1"
         android:fromYScale="1"
         android:fromYScale="1"
         android:pivotX="50%"
         android:pivotX="50%"

+ 86 - 0
app/src/main/res/layout/activity_stars.xml

@@ -2,14 +2,100 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
+    android:orientation="vertical"
     xmlns:app="http://schemas.android.com/apk/res-auto">
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
 
     <com.airbnb.lottie.LottieAnimationView
     <com.airbnb.lottie.LottieAnimationView
         android:id="@+id/lottie_view"
         android:id="@+id/lottie_view"
         app:lottie_fileName="stars.json"
         app:lottie_fileName="stars.json"
+        android:layout_centerHorizontal="true"
         app:lottie_autoPlay="false"
         app:lottie_autoPlay="false"
         app:lottie_loop="false"
         app:lottie_loop="false"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
         android:layout_height="wrap_content"/>
 
 
+    <RelativeLayout
+        android:id="@+id/rl_main"
+        android:layout_below="@+id/lottie_view"
+        android:layout_centerHorizontal="true"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent">
+        <View
+            android:id="@+id/v1"
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"/>
+        <ImageView
+            android:id="@+id/imv_star_1"
+            android:layout_toRightOf="@+id/v1"
+            android:layout_marginTop="50dp"
+            android:rotation="45"
+            android:src="@mipmap/icon_stars_gray"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <ImageView
+            android:id="@+id/imv_star_2"
+            android:layout_toRightOf="@+id/imv_star_1"
+            android:layout_marginLeft="30dp"
+            android:layout_marginTop="30dp"
+
+            android:src="@mipmap/icon_stars_gray"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <ImageView
+            android:id="@+id/imv_star_3"
+            android:layout_toRightOf="@+id/imv_star_2"
+            android:layout_marginLeft="30dp"
+            android:layout_marginTop="50dp"
+            android:rotation="45"
+            android:src="@mipmap/icon_stars_gray"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <View
+            android:layout_toRightOf="@+id/imv_star_3"
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"/>
+
+        <ImageView
+            android:id="@+id/imv_star_4"
+            android:layout_toRightOf="@+id/v1"
+            android:layout_marginTop="50dp"
+            android:rotation="45"
+            android:src="@mipmap/icon_stars_yellow"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <ImageView
+            android:id="@+id/imv_star_5"
+            android:layout_toRightOf="@+id/imv_star_4"
+            android:layout_marginLeft="30dp"
+            android:layout_marginTop="30dp"
+
+            android:src="@mipmap/icon_stars_yellow"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <ImageView
+            android:id="@+id/imv_star_6"
+            android:layout_toRightOf="@+id/imv_star_5"
+            android:layout_marginLeft="30dp"
+            android:layout_marginTop="50dp"
+            android:rotation="45"
+            android:src="@mipmap/icon_stars_yellow"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+
+    </RelativeLayout>
+
+    <TextView
+        android:layout_below="@+id/lottie_view"
+        android:layout_toRightOf="@+id/rl_main"
+        android:layout_marginLeft="-80dp"
+        android:layout_marginTop="30dp"
+        android:id="@+id/tv_score"
+        android:text="+0"
+        android:textSize="50sp"
+        android:textColor="#FFCC41"
+        android:textStyle="bold"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
 </RelativeLayout>
 </RelativeLayout>

BIN
app/src/main/res/mipmap-xxxhdpi/icon_stars_gray.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_stars_yellow.png


+ 10 - 0
app/src/main/res/xml/jpush_file_paths.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <paths>
+        <root-path name="jad_root_path" path="."/>
+        <external-path name="jad_external_path" path="JAdDownload" />
+        <external-files-path name="jad_external_files_path" path="JAdDownload" />
+        <files-path name="jad_files_path" path="JAdDownload" />
+        <cache-path name="jad_cache_path" path="JAdDownload" />
+    </paths>
+</resources>