Ver Fonte

卡顿的动画

詹子聪 há 6 anos atrás
pai
commit
911e9c0b0a

+ 55 - 0
app/src/main/java/com/itant/shibei/ui/TabActivity.java

@@ -4,6 +4,9 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
 
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
@@ -11,6 +14,7 @@ import androidx.navigation.NavController;
 import androidx.viewpager.widget.ViewPager;
 
 import com.flyco.tablayout.SlidingTabLayout;
+import com.google.android.material.appbar.AppBarLayout;
 import com.google.android.material.bottomnavigation.BottomNavigationView;
 import com.google.android.material.bottomnavigation.LabelVisibilityMode;
 import com.itant.shibei.R;
@@ -24,12 +28,21 @@ import com.itant.shibei.ui.mine.MineActivity;
 import com.itant.shibei.ui.mine.MineFragment;
 import com.miekir.common.adapter.TabFragmentAdapter;
 import com.miekir.common.utils.ViewTool;
+import com.socks.library.KLog;
+import com.socks.library.KLogUtil;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class TabActivity extends BaseShiBeiActivity implements View.OnClickListener {
 
+    private RelativeLayout rl_search;
+    private RelativeLayout rl_search_top;
+    private ImageView iv_search;
+    private ImageView iv_search_top;
+
+    private double mDefaultImageSize;
+
     @Override
     public int getLayoutID() {
         return R.layout.activity_tab;
@@ -53,8 +66,50 @@ public class TabActivity extends BaseShiBeiActivity implements View.OnClickListe
         stl_home.setViewPager(vp_main, titles);
 
         ViewTool.setOnClickListener(this, new int[]{R.id.rl_search_top, R.id.rl_more}, this);
+
+        mDefaultImageSize = getResources().getDimension(R.dimen.size_image_s);
+        rl_search = findViewById(R.id.rl_search);
+        iv_search = findViewById(R.id.iv_search);
+        rl_search_top = findViewById(R.id.rl_search_top);
+        iv_search_top = findViewById(R.id.iv_search_top);
+        AppBarLayout abl_main = findViewById(R.id.abl_main);
+        abl_main.addOnOffsetChangedListener(mAppBarOffsetChangedListener);
     }
 
+    private AppBarLayout.OnOffsetChangedListener mAppBarOffsetChangedListener = new AppBarLayout.OnOffsetChangedListener() {
+        @Override
+        public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
+            // AppBarLayout完全折叠时,fraction为1
+            float fraction = ((float) Math.abs(verticalOffset)) / appBarLayout.getTotalScrollRange();
+
+            float reFraction = 1 - fraction;
+            if (reFraction < 0.007) {
+                // 完全折叠
+                rl_search_top.setVisibility(View.GONE);
+                rl_search.setVisibility(View.VISIBLE);
+            } else if (reFraction > 0.988) {
+                // 完全展开
+                rl_search.setVisibility(View.GONE);
+                rl_search_top.setVisibility(View.VISIBLE);
+            } else {
+                rl_search.setVisibility(View.VISIBLE);
+                rl_search_top.setVisibility(View.VISIBLE);
+            }
+
+            double searchSize = mDefaultImageSize * fraction;
+            ViewGroup.LayoutParams searchParams = iv_search.getLayoutParams();
+            searchParams.width = (int) searchSize;
+            searchParams.height = (int) searchSize;
+            iv_search.requestLayout();
+
+            double topSearchSize = mDefaultImageSize - searchSize;
+            ViewGroup.LayoutParams topSearchParams = iv_search_top.getLayoutParams();
+            topSearchParams.width = (int) topSearchSize;
+            topSearchParams.height = (int) topSearchSize;
+            iv_search_top.requestLayout();
+        }
+    };
+
 
     @Override
     public void onClick(View v) {

+ 6 - 2
app/src/main/res/layout/activity_tab.xml

@@ -7,7 +7,8 @@
 
     <com.google.android.material.appbar.AppBarLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="wrap_content"
+        android:id="@+id/abl_main">
         <!--android:theme="@style/AppTheme.AppBarOverlay"-->
 
         <LinearLayout
@@ -47,6 +48,7 @@
                 android:background="?attr/selectableItemBackgroundBorderless">
                 <!--无边界波纹-->
                 <ImageView
+                    android:id="@+id/iv_search_top"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
@@ -102,9 +104,11 @@
                 android:id="@+id/rl_search"
                 android:layout_width="@dimen/height_edit_text"
                 android:layout_height="@dimen/height_sliding_tab"
-                android:background="?attr/selectableItemBackgroundBorderless">
+                android:background="?attr/selectableItemBackgroundBorderless"
+                android:visibility="gone">
                 <!--无边界波纹-->
                 <ImageView
+                    android:id="@+id/iv_search"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:src="@drawable/ic_search"