添加全屏浏览图片工具栏

This commit is contained in:
2026-04-24 15:40:55 +08:00
parent be3050d4af
commit e18d172ce4
4 changed files with 88 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
package cc.winboll.gallery;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
@@ -8,7 +9,6 @@ import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ImageButton;
import androidx.viewpager.widget.ViewPager;
import cc.winboll.studio.libappbase.ToastUtils;
import java.util.ArrayList;
public class ImageViewerActivity extends Activity implements ViewPager.OnPageChangeListener {
@@ -20,6 +20,8 @@ public class ImageViewerActivity extends Activity implements ViewPager.OnPageCha
private ViewPager viewPager;
private View toolbar;
private ImageButton btnBack;
private ImageButton btnDelete;
private ImageButton btnShare;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -34,6 +36,8 @@ public class ImageViewerActivity extends Activity implements ViewPager.OnPageCha
viewPager = findViewById(R.id.view_pager);
toolbar = findViewById(R.id.toolbar);
btnBack = findViewById(R.id.btn_back);
btnDelete = findViewById(R.id.btn_delete);
btnShare = findViewById(R.id.btn_share);
ImagePagerAdapter adapter = new ImagePagerAdapter(imageUrls);
viewPager.setAdapter(adapter);
@@ -47,6 +51,20 @@ public class ImageViewerActivity extends Activity implements ViewPager.OnPageCha
}
});
btnDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
deleteCurrentImage();
}
});
btnShare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
shareCurrentImage();
}
});
viewPager.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -63,6 +81,34 @@ public class ImageViewerActivity extends Activity implements ViewPager.OnPageCha
}
}
private void deleteCurrentImage() {
if (currentPosition >= 0 && currentPosition < imageUrls.size()) {
Uri imageUri = imageUrls.get(currentPosition);
getContentResolver().delete(imageUri, null, null);
imageUrls.remove(currentPosition);
if (imageUrls.isEmpty()) {
finish();
} else {
if (currentPosition >= imageUrls.size()) {
currentPosition = imageUrls.size() - 1;
}
viewPager.setAdapter(new ImagePagerAdapter(imageUrls));
viewPager.setCurrentItem(currentPosition);
}
}
}
private void shareCurrentImage() {
if (currentPosition >= 0 && currentPosition < imageUrls.size()) {
Uri imageUri = imageUrls.get(currentPosition);
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share Image"));
}
}
@Override
public void onPageSelected(int position) {
currentPosition = position;

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,-1H5v2h14V4z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92s2.92,-1.31 2.92,-2.92 -1.31,-2.92 -2.92,-2.92z"/>
</vector>

View File

@@ -17,7 +17,7 @@
android:layout_gravity="top"
android:background="#CC000000"
android:orientation="horizontal"
android:padding="8dp">
android:padding="4dp">
<ImageButton
android:id="@+id/btn_back"
@@ -27,6 +27,27 @@
android:src="@drawable/ic_back"
android:contentDescription="Back"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
<ImageButton
android:id="@+id/btn_share"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_share"
android:contentDescription="Share"/>
<ImageButton
android:id="@+id/btn_delete"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_delete"
android:contentDescription="Delete"/>
</LinearLayout>
</FrameLayout>