From 226cbf43fe302264e86b5ef5cf535fc203d6cc2a Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 26 Apr 2026 10:10:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=BB=9A=E5=8A=A8=E5=88=B0?= =?UTF-8?q?=E9=A1=B6=E9=83=A8=E6=82=AC=E6=B5=AE=E6=8C=89=E9=92=AE=E5=8F=8A?= =?UTF-8?q?=E7=BD=AE=E9=A1=B6=E5=9B=BE=E6=A0=87=E6=A0=B7=E5=BC=8F=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 主窗口和相册集浏览窗口添加滚动到顶部悬浮按钮 - 当滚动超过一页时自动显示按钮,点击返回顶部 - 相册集浏览窗口置顶图标添加圆形半透明白色背景 - 圆形背景添加1dp黑色边框,图标为黑色 --- gallery/build.properties | 4 +- .../winboll/studio/gallery/AlbumActivity.java | 29 ++++++++++ .../winboll/studio/gallery/MainActivity.java | 27 +++++++++ .../src/main/res/drawable/bg_circle_white.xml | 8 +++ gallery/src/main/res/drawable/ic_arrow_up.xml | 10 ++++ gallery/src/main/res/layout/activity_main.xml | 57 ++++++++++++------- gallery/src/main/res/layout/item_gallery.xml | 8 ++- 7 files changed, 118 insertions(+), 25 deletions(-) create mode 100644 gallery/src/main/res/drawable/bg_circle_white.xml create mode 100644 gallery/src/main/res/drawable/ic_arrow_up.xml diff --git a/gallery/build.properties b/gallery/build.properties index 7b66d2f..d250128 100644 --- a/gallery/build.properties +++ b/gallery/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun Apr 26 09:40:02 CST 2026 +#Sun Apr 26 10:06:51 CST 2026 stageCount=4 libraryProject= baseVersion=15.0 publishVersion=15.0.3 -buildCount=22 +buildCount=27 baseBetaVersion=15.0.4 diff --git a/gallery/src/main/java/cc/winboll/studio/gallery/AlbumActivity.java b/gallery/src/main/java/cc/winboll/studio/gallery/AlbumActivity.java index d2e540b..e0e6795 100644 --- a/gallery/src/main/java/cc/winboll/studio/gallery/AlbumActivity.java +++ b/gallery/src/main/java/cc/winboll/studio/gallery/AlbumActivity.java @@ -8,6 +8,7 @@ import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; @@ -16,6 +17,7 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import java.util.ArrayList; import cc.winboll.studio.libappbase.LogUtils; @@ -30,6 +32,8 @@ public class AlbumActivity extends AppCompatActivity { private ImageAdapter adapter; private String albumPath; private String albumName; + private FloatingActionButton fabScrollTop; + private RecyclerView.OnScrollListener scrollListener; @Override protected void onCreate(Bundle savedInstanceState) { @@ -51,6 +55,31 @@ public class AlbumActivity extends AppCompatActivity { adapter.setContext(this); recyclerView.setAdapter(adapter); + fabScrollTop = findViewById(R.id.fab_scroll_top); + fabScrollTop.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + recyclerView.scrollToPosition(0); + } + }); + + scrollListener = new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + GridLayoutManager layoutManager = (GridLayoutManager) recyclerView.getLayoutManager(); + if (layoutManager != null) { + int firstVisible = layoutManager.findFirstVisibleItemPosition(); + if (firstVisible > 0) { + fabScrollTop.setVisibility(View.VISIBLE); + } else { + fabScrollTop.setVisibility(View.GONE); + } + } + } + }; + recyclerView.addOnScrollListener(scrollListener); + adapter.setOnImageClickListener(new OnImageClickListener() { @Override public void onImageClick(int position, ArrayList urls, ArrayList paths) { diff --git a/gallery/src/main/java/cc/winboll/studio/gallery/MainActivity.java b/gallery/src/main/java/cc/winboll/studio/gallery/MainActivity.java index 6b33283..607694b 100644 --- a/gallery/src/main/java/cc/winboll/studio/gallery/MainActivity.java +++ b/gallery/src/main/java/cc/winboll/studio/gallery/MainActivity.java @@ -14,6 +14,7 @@ import android.provider.MediaStore; import android.provider.Settings; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; @@ -22,6 +23,7 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import cc.winboll.studio.gallery.AlbumAdapter.OnAlbumClickListener; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogActivity; @@ -37,6 +39,7 @@ public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private AlbumAdapter adapter; private Preferences prefs; + private FloatingActionButton fabScrollTop; @Override protected void onCreate(Bundle savedInstanceState) { @@ -55,6 +58,30 @@ public class MainActivity extends AppCompatActivity { adapter.setContext(this); recyclerView.setAdapter(adapter); + fabScrollTop = findViewById(R.id.fab_scroll_top); + fabScrollTop.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + recyclerView.scrollToPosition(0); + } + }); + + recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + GridLayoutManager layoutManager = (GridLayoutManager) recyclerView.getLayoutManager(); + if (layoutManager != null) { + int firstVisible = layoutManager.findFirstVisibleItemPosition(); + if (firstVisible > 0) { + fabScrollTop.setVisibility(View.VISIBLE); + } else { + fabScrollTop.setVisibility(View.GONE); + } + } + } + }); + adapter.setOnAlbumClickListener(new OnAlbumClickListener() { @Override public void onAlbumClick(Album album) { diff --git a/gallery/src/main/res/drawable/bg_circle_white.xml b/gallery/src/main/res/drawable/bg_circle_white.xml new file mode 100644 index 0000000..fb0d808 --- /dev/null +++ b/gallery/src/main/res/drawable/bg_circle_white.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/gallery/src/main/res/drawable/ic_arrow_up.xml b/gallery/src/main/res/drawable/ic_arrow_up.xml new file mode 100644 index 0000000..aa5b4d5 --- /dev/null +++ b/gallery/src/main/res/drawable/ic_arrow_up.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/gallery/src/main/res/layout/activity_main.xml b/gallery/src/main/res/layout/activity_main.xml index ccb42b7..bf9334a 100644 --- a/gallery/src/main/res/layout/activity_main.xml +++ b/gallery/src/main/res/layout/activity_main.xml @@ -1,28 +1,45 @@ - + android:layout_height="match_parent"> - - - - - - - + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + \ No newline at end of file diff --git a/gallery/src/main/res/layout/item_gallery.xml b/gallery/src/main/res/layout/item_gallery.xml index 21d64b4..3a76c93 100644 --- a/gallery/src/main/res/layout/item_gallery.xml +++ b/gallery/src/main/res/layout/item_gallery.xml @@ -18,9 +18,11 @@ android:layout_height="24dp" android:layout_gravity="top|end" android:layout_margin="4dp" - android:background="@android:color/transparent" - android:padding="3dp" + android:background="@drawable/bg_circle_white" + android:padding="4dp" android:src="@drawable/ic_pin" - android:visibility="gone"/> + android:visibility="gone" + app:tint="@color/black" + xmlns:app="http://schemas.android.com/apk/res-auto"/> \ No newline at end of file