Kaynağa Gözat

新增网页;修改引导;

czq 2 yıl önce
ebeveyn
işleme
a0fd111996

+ 1 - 0
.idea/misc.xml

@@ -18,6 +18,7 @@
         <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_umeng_login.xml" value="0.18" />
         <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_web.xml" value="0.1816123188405797" />
       </map>
     </option>
   </component>

+ 3 - 0
app/src/main/AndroidManifest.xml

@@ -98,6 +98,9 @@
         </provider>
 
         <activity android:name=".activity.UMengLoginActivity"/>
+        <activity
+            android:name=".activity.WebActivity"
+            android:screenOrientation="landscape" />
     </application>
 
 </manifest>

+ 4 - 0
app/src/main/java/com/xunao/effectdemo/activity/CongratulationsActivity.kt

@@ -15,11 +15,15 @@ import kotlinx.android.synthetic.main.activity_lottie.*
  */
 class CongratulationsActivity : Activity() {
 
+    val  colorInt :IntArray = intArrayOf(R.color.xui_config_color_red, R.color.xui_btn_green_select_color,
+        R.color.xui_btn_blue_select_color,R.color.colorAccent)
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_congratulations)
         btn_start.setOnClickListener{v->
             lottie_view.playAnimation()
         }
+
+        like.setDotNum(4,colorInt)
     }
 }

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/activity/GuideActivity.java

@@ -70,7 +70,7 @@ public class GuideActivity extends Activity {
 				.focusOn(imvPlay)
 				.picture(R.mipmap.icon_zhi)
 				.pictureGravity(Gravity.BOTTOM)
-//				.disableFocusAnimation()
+				.disableFocusAnimation()
 				.fitWindowsAuto()
 				.build();
 
@@ -78,7 +78,7 @@ public class GuideActivity extends Activity {
 //				.title("请注意,这是第二步")
 				.focusOn(imvPause)
 				.picture(R.mipmap.icon_zhi)
-//				.disableFocusAnimation()
+				.disableFocusAnimation()
 				.fitWindowsAuto()
 				.build();
 
@@ -86,7 +86,7 @@ public class GuideActivity extends Activity {
 //				.title("请注意,这是第三步")
 				.focusOn(imvReset)
 				.picture(R.mipmap.icon_zhi)
-//				.disableFocusAnimation()
+				.disableFocusAnimation()
 				.fitWindowsAuto()
 				.build();
 

+ 6 - 1
app/src/main/java/com/xunao/effectdemo/activity/MainActivity.java

@@ -23,7 +23,7 @@ import java.util.Map;
 public class MainActivity extends Activity {
 
 	Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,
-			btn9,btn10,btn11,btn12,btn13, btn14;
+			btn9,btn10,btn11,btn12,btn13, btn14,btn15;
 	Intent intent;
 
 	@Override
@@ -114,5 +114,10 @@ public class MainActivity extends Activity {
 			intent = new Intent(MainActivity.this,UMengLoginActivity.class);
 			startActivity(intent);
 		});
+		btn15 = findViewById(R.id.btn_15);
+		btn15.setOnClickListener(v->{
+			intent = new Intent(MainActivity.this,WebActivity.class);
+			startActivity(intent);
+		});
 	}
 }

+ 16 - 0
app/src/main/java/com/xunao/effectdemo/activity/UMengLoginActivity.java

@@ -7,6 +7,7 @@ import android.widget.Button;
 
 import androidx.annotation.Nullable;
 
+import com.example.library.LikeView;
 import com.umeng.umverify.UMVerifyHelper;
 import com.umeng.umverify.listener.UMTokenResultListener;
 import com.xunao.effectdemo.R;
@@ -23,11 +24,26 @@ public class UMengLoginActivity extends Activity {
 	private Button btn_login;
 	private UMVerifyHelper umVerifyHelper;
 	private UMTokenResultListener mTokenListener;
+	private LikeView likeView;
+	private int[] colorInt;
 	@Override
 	protected void onCreate(@Nullable Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
 		setContentView(R.layout.activity_umeng_login);
 		btn_login = findViewById(R.id.btn_login);
+		likeView = findViewById(R.id.like);
+		colorInt = new int[]{
+				R.color.xui_config_color_red, R.color.xui_btn_green_select_color,
+				R.color.xui_btn_blue_select_color,R.color.colorAccent,
+				R.color.xui_config_color_red, R.color.xui_btn_green_select_color,
+				R.color.xui_btn_blue_select_color,R.color.colorAccent,
+				R.color.xui_config_color_red, R.color.xui_btn_green_select_color,
+				R.color.xui_btn_blue_select_color,R.color.colorAccent,
+				R.color.xui_config_color_red, R.color.xui_btn_green_select_color,
+				R.color.xui_btn_blue_select_color,R.color.colorAccent
+		};
+
+		likeView.setDotNum(16,colorInt);
 		btn_login.setOnClickListener(v->{
 			login();
 		});

+ 61 - 0
app/src/main/java/com/xunao/effectdemo/activity/WebActivity.java

@@ -0,0 +1,61 @@
+package com.xunao.effectdemo.activity;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+
+import androidx.annotation.Nullable;
+
+import com.xunao.effectdemo.R;
+
+/**
+ * author : 程中强
+ * e-mail : 740479946@qq.com
+ * date : 2022/8/2917:40
+ * desc :
+ * version: 1.0
+ */
+public class WebActivity extends Activity {
+
+	@Override
+	protected void onCreate(@Nullable Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_web);
+
+
+		WebView webview = findViewById(R.id.webview);
+		WebSettings webSettings = webview.getSettings();
+		webSettings.setDomStorageEnabled(true);
+		webSettings.setJavaScriptEnabled(true);
+		webSettings.setBlockNetworkImage(false);
+		webSettings.setBuiltInZoomControls(true);
+		// 覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
+		webview.setWebViewClient(new WebViewClient() {
+			@Override
+			public boolean shouldOverrideUrlLoading(WebView view, String url) {
+//                view.loadUrl(url);
+//                return true;
+
+				if (url.startsWith("http:") || url.startsWith("https:") || url.startsWith("ftp")) {
+					view.loadUrl(url);
+					return true;
+				} else if (url.startsWith("scheme://")) {
+					// 使用浏览器打开
+					Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+					startActivity(intent);
+					return true;
+				} else {
+					return false;
+				}
+
+			}
+		});
+
+		webview.loadUrl("http://waibao.kidcastle.org/smallgame/tiaoyitiao/zjreplay.html");
+
+	}
+}

+ 6 - 6
app/src/main/java/com/xunao/effectdemo/view/MyGuideCaseView.java

@@ -407,12 +407,12 @@ public class MyGuideCaseView extends FrameLayout implements ViewTreeObserver.OnG
 			startAnimation(mEnterAnimation);
 		} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
 //			doCircularEnterAnimation();
-			Animation aset_4 = new TranslateAnimation(0, 0, -20, 20);
-			aset_4.setDuration(800);//每次时间
-			aset_4.setRepeatCount(-1);//重复次数
-			/**倒序重复REVERSE 正序重复RESTART**/
-			aset_4.setRepeatMode(Animation.REVERSE);
-			mImageView.startAnimation(aset_4);
+//			Animation aset_4 = new TranslateAnimation(0, 0, -20, 20);
+//			aset_4.setDuration(800);//每次时间
+//			aset_4.setRepeatCount(-1);//重复次数
+//			/**倒序重复REVERSE 正序重复RESTART**/
+//			aset_4.setRepeatMode(Animation.REVERSE);
+//			mImageView.startAnimation(aset_4);
 		} else {
 			Animation fadeInAnimation = AnimationUtils.loadAnimation(mActivity, R.anim.gcv_fade_in);
 			fadeInAnimation.setFillAfter(true);

+ 246 - 0
app/src/main/java/com/xunao/effectdemo/view/MyLikeView.java

@@ -0,0 +1,246 @@
+package com.xunao.effectdemo.view;
+
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.os.Handler;
+import android.os.Message;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.animation.LinearInterpolator;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+
+/**
+ * author : 程中强
+ * e-mail : 740479946@qq.com
+ * date : 2022/8/2615:10
+ * desc :
+ * version: 1.0
+ */
+public class MyLikeView  extends View {
+
+	private Context context;
+	private int ivResore;
+	private int dotNum;
+	private Paint mCircle;
+	private Paint mBitmap;
+	private int centerX;
+	private int centerY;
+	private Bitmap bitmap;
+	private Float mBimt;
+	private String canvasType;
+	private Float circleR;
+	private Float circleR0;
+	private Float dotR;
+	private int circleColor;
+	private int[] dotColors;
+	private int width;
+	private int height;
+	private Handler handler;
+
+	public MyLikeView(@NonNull Context context) {
+		this(context, (AttributeSet)null);
+	}
+
+	public MyLikeView(@NonNull Context context, @Nullable AttributeSet attrs) {
+		this(context, attrs, -1);
+	}
+
+	public MyLikeView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+		super(context, attrs, defStyleAttr);
+		this.dotNum = 7;
+		this.mBimt = 0.0F;
+		this.canvasType = "Bitmap";
+		this.circleR = 0.0F;
+		this.circleR0 = 0.0F;
+		this.dotR = 10.0F;
+		this.dotColors = new int[]{-2446854, -868533, -1852250, -13460755, -5117031, -9975379, -2200660};
+		this.handler = new Handler() {
+			public void handleMessage(Message msg) {
+				super.handleMessage(msg);
+				if (msg.what == 0) {
+					MyLikeView.this.postInvalidate();
+				}
+
+			}
+		};
+//		TypedArray typedArray = context.obtainStyledAttributes(attrs, styleable.MyLikeView);
+//		if (typedArray != null) {
+//			this.ivResore = typedArray.getResourceId(styleable.MyLikeView_bitmap, mipmap.heart);
+//			this.circleColor = typedArray.getColor(styleable.MyLikeView_circleColor, ContextCompat.getColor(context, color.colorPrimary));
+//			this.dotNum = typedArray.getInteger(styleable.MyLikeView_dotNum, 7);
+//		}
+//
+//		typedArray.recycle();
+		this.init(context);
+		this.setOnClickListener(new OnClickListener() {
+			public void onClick(View view) {
+				MyLikeView.this.start();
+			}
+		});
+	}
+
+	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+		if (this.bitmap != null) {
+			this.width = this.bitmap.getWidth() * 4;
+			this.height = this.bitmap.getWidth() * 4;
+			this.setMeasuredDimension(this.width, this.height);
+		}
+
+	}
+
+	private void init(Context context) {
+		this.context = context;
+		this.mCircle = new Paint();
+		this.mCircle.setAntiAlias(true);
+		this.mBitmap = new Paint();
+		this.mBitmap.setAntiAlias(true);
+		BitmapFactory.Options options = new BitmapFactory.Options();
+		options.inScaled = false;
+		this.bitmap = BitmapFactory.decodeResource(context.getResources(), this.ivResore, options);
+	}
+
+	protected void onDraw(Canvas canvas) {
+		super.onDraw(canvas);
+		this.centerX = this.getWidth() / 2;
+		this.centerY = this.getHeight() / 2;
+		String var2 = this.canvasType;
+		byte var3 = -1;
+		switch(var2.hashCode()) {
+			case 68905:
+				if (var2.equals("Dot")) {
+					var3 = 2;
+				}
+				break;
+			case 1990057295:
+				if (var2.equals("Bitmap")) {
+					var3 = 0;
+				}
+				break;
+			case 2018617584:
+				if (var2.equals("Circle")) {
+					var3 = 1;
+				}
+		}
+
+		switch(var3) {
+			case 0:
+				this.canvasHeart(canvas);
+				break;
+			case 1:
+				this.canvasCircle(canvas);
+				break;
+			case 2:
+				this.canvasDot(canvas);
+		}
+
+	}
+
+	private void canvasDot(Canvas canvas) {
+		this.canvasHeart(canvas);
+		if (this.mBimt == 36.0F) {
+			float angleA = 0.0F;
+			float angleB = -0.15707964F;
+
+			for(int i = 0; i < this.dotNum; ++i) {
+				this.mCircle.setColor(this.dotColors[i]);
+				canvas.drawCircle((float)((double)(this.circleR + 5.0F) * Math.sin((double)angleB)), (float)((double)(this.circleR + 5.0F) * Math.cos((double)angleB)), this.dotR, this.mCircle);
+				angleA = (float)((double)angleA + 6.283185307179586D / (double)this.dotNum);
+				canvas.drawCircle((float)((double)this.circleR * Math.sin((double)angleA)), (float)((double)this.circleR * Math.cos((double)angleA)), this.dotR - 2.0F, this.mCircle);
+				angleB = (float)((double)angleB + 6.283185307179586D / (double)this.dotNum);
+			}
+		}
+
+	}
+
+	private void canvasCircle(Canvas canvas) {
+		this.mCircle.setColor(this.circleColor);
+		canvas.drawCircle((float)this.centerX, (float)this.centerY, this.circleR0, this.mCircle);
+	}
+
+	private void canvasHeart(Canvas canvas) {
+		canvas.translate((float)this.centerX, (float)this.centerY);
+		canvas.drawBitmap(this.bitmap, (float)(-this.bitmap.getWidth() / 2), (float)(-this.bitmap.getWidth() / 2), this.mBitmap);
+	}
+
+	public void start() {
+		this.circleR = (float)this.bitmap.getWidth();
+		this.circleR0 = 0.0F;
+		this.dotR = 6.0F;
+		ValueAnimator animator = ValueAnimator.ofFloat(new float[]{0.0F, 72.0F});
+		animator.setDuration(500L);
+		animator.setInterpolator(new LinearInterpolator());
+		animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+			public void onAnimationUpdate(ValueAnimator animation) {
+				Float value = (Float)animation.getAnimatedValue();
+				if (value <= 36.0F) {
+					MyLikeView.this.mBimt = value;
+					MyLikeView.this.canvasType = "Circle";
+				} else {
+					MyLikeView.this.canvasType = "Dot";
+					MyLikeView.this.circleR = MyLikeView.this.circleR + 1.0F;
+					MyLikeView.this.dotR = MyLikeView.this.dotR - 0.2F;
+				}
+
+				MyLikeView.this.circleR0 = MyLikeView.this.circleR0 + 1.0F;
+				if (value == 72.0F) {
+					MyLikeView.this.mBimt = value / 2.0F;
+
+					try {
+						Thread.sleep(50L);
+						(new Thread(MyLikeView.this.new progrssThread())).start();
+					} catch (InterruptedException var4) {
+						var4.printStackTrace();
+					}
+				}
+
+				MyLikeView.this.invalidate();
+			}
+		});
+		animator.start();
+	}
+
+	public void setIvResore(int ivResore) {
+		this.ivResore = ivResore;
+	}
+
+	public void setCircleColor(int circleColor) {
+		this.circleColor = circleColor;
+	}
+
+	public void setDotNum(int dotNum, int[] dotColors) {
+		this.dotNum = dotNum;
+		this.dotColors = dotColors;
+	}
+
+	public class progrssThread implements Runnable {
+		public progrssThread() {
+		}
+
+		public void run() {
+			while(MyLikeView.this.dotR > 0.0F) {
+				try {
+					Thread.sleep(9L);
+					Message msg = Message.obtain();
+					msg.what = 0;
+					MyLikeView.this.dotR = MyLikeView.this.dotR - 0.3F;
+					if (MyLikeView.this.circleR < 36.0F) {
+						MyLikeView.this.circleR = MyLikeView.this.circleR + 1.0F;
+					}
+
+					MyLikeView.this.handler.sendMessage(msg);
+				} catch (InterruptedException var2) {
+					var2.printStackTrace();
+				}
+			}
+
+		}
+	}
+}

+ 6 - 0
app/src/main/res/layout/activity_main.xml

@@ -91,6 +91,12 @@
             android:text="一键登录"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>
+
+        <Button
+            android:id="@+id/btn_15"
+            android:text="小游戏"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
     </LinearLayout>
 
 </ScrollView>

+ 10 - 1
app/src/main/res/layout/activity_umeng_login.xml

@@ -1,7 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <com.example.library.LikeView
+        android:id="@+id/like"
+        android:layout_centerHorizontal="true"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:circleColor="@color/colorAccent"
+        app:bitmap="@mipmap/icon_anim"/>
 
     <Button
         android:id="@+id/btn_login"

+ 11 - 0
app/src/main/res/layout/activity_web.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <WebView
+        android:id="@+id/webview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 4 - 0
app/src/main/res/values/attrs.xml

@@ -151,4 +151,8 @@
         </attr>
     </declare-styleable>
 
+    <declare-styleable name="MyLikeView">
+
+    </declare-styleable>
+
 </resources>