Commit 32434bc9c6e1d83dffc96b03d464b9a837b60d76
1 parent
0b06f873f3
Exists in
master
全屏查看图片
Showing
5 changed files
with
99 additions
and
0 deletions
Show diff stats
app/build.gradle
... | ... | @@ -93,4 +93,6 @@ dependencies { |
93 | 93 | implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2' |
94 | 94 | implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2' |
95 | 95 | |
96 | + // 图片查看 | |
97 | + implementation 'com.github.chrisbanes:PhotoView:2.0.0' | |
96 | 98 | } |
97 | 99 | \ No newline at end of file | ... | ... |
app/src/main/java/com/hjx/parent/HomeworkShareActivity.java
... | ... | @@ -19,6 +19,7 @@ import com.chad.library.adapter.base.BaseViewHolder; |
19 | 19 | import com.google.gson.Gson; |
20 | 20 | import com.gyf.immersionbar.ImmersionBar; |
21 | 21 | import com.hjx.parent.databinding.ActivityHomeworkShareBinding; |
22 | +import com.hjx.parent.dialog.PhotoViewDialog; | |
22 | 23 | import com.hjx.parent.rx.BaseRxActivity; |
23 | 24 | import com.prws.common.bean.ResponseResult; |
24 | 25 | import com.prws.common.bean.Student; |
... | ... | @@ -220,6 +221,9 @@ public class HomeworkShareActivity extends BaseRxActivity<ActivityHomeworkShareB |
220 | 221 | if (url == null) { |
221 | 222 | return; |
222 | 223 | } |
224 | + view.setOnClickListener(v -> { | |
225 | + new PhotoViewDialog(mContext).show(url); | |
226 | + }); | |
223 | 227 | Single.just(url) |
224 | 228 | .subscribeOn(Schedulers.io()) |
225 | 229 | .map(u -> Glide.with(mContext).asBitmap().load(url).submit().get()) | ... | ... |
app/src/main/java/com/hjx/parent/dialog/PhotoViewDialog.java
... | ... | @@ -0,0 +1,59 @@ |
1 | +package com.hjx.parent.dialog; | |
2 | + | |
3 | +import android.content.Context; | |
4 | +import android.graphics.Color; | |
5 | +import android.view.View; | |
6 | +import android.view.WindowManager; | |
7 | + | |
8 | +import androidx.annotation.NonNull; | |
9 | + | |
10 | +import com.bumptech.glide.Glide; | |
11 | +import com.hjx.parent.databinding.DialogPhotoViewBinding; | |
12 | + | |
13 | +public class PhotoViewDialog extends BaseDialog<DialogPhotoViewBinding> { | |
14 | + public PhotoViewDialog(Context context) { | |
15 | + super(context); | |
16 | + } | |
17 | + | |
18 | + private String url; | |
19 | + | |
20 | + @Override | |
21 | + public void initView() { | |
22 | + setupWindow(); | |
23 | + setCancelable(true); | |
24 | + binding.btnClose.setOnClickListener(v -> dismiss()); | |
25 | + } | |
26 | + | |
27 | + private void setupWindow() { | |
28 | + // 在显示 Dialog 之前对窗口进行设置 | |
29 | + getWindow().setFlags( | |
30 | + WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, | |
31 | + WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); | |
32 | + | |
33 | + // 设置状态栏背景透明 | |
34 | + getWindow().setStatusBarColor(Color.TRANSPARENT); | |
35 | + | |
36 | + // 让内容延伸到状态栏区域,并保持状态栏和导航栏的显示 | |
37 | + getWindow().getDecorView().setSystemUiVisibility( | |
38 | + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | |
39 | + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); | |
40 | + | |
41 | + } | |
42 | + | |
43 | + @Override | |
44 | + public void onDialogStart() { | |
45 | + super.onDialogStart(); | |
46 | + Glide.with(getContext()).load(url).into(binding.photoView); | |
47 | + } | |
48 | + | |
49 | + public void show(String url) { | |
50 | + this.url = url; | |
51 | + super.show(); | |
52 | + } | |
53 | + | |
54 | + @NonNull | |
55 | + @Override | |
56 | + public DialogPhotoViewBinding getBinding() { | |
57 | + return DialogPhotoViewBinding.inflate(getLayoutInflater()); | |
58 | + } | |
59 | +} | ... | ... |
app/src/main/res/layout/dialog_photo_view.xml
... | ... | @@ -0,0 +1,28 @@ |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
3 | + xmlns:app="http://schemas.android.com/apk/res-auto" | |
4 | + xmlns:tools="http://schemas.android.com/tools" | |
5 | + android:orientation="vertical" | |
6 | + android:layout_width="match_parent" | |
7 | + android:layout_height="match_parent" | |
8 | + tools:background="#888" | |
9 | + tools:ignore="UseCompoundDrawables,HardcodedText,SmallSp,ContentDescription"> | |
10 | + | |
11 | + <com.github.chrisbanes.photoview.PhotoView | |
12 | + android:id="@+id/photoView" | |
13 | + android:layout_width="match_parent" | |
14 | + android:layout_height="match_parent" /> | |
15 | + | |
16 | + <ImageView | |
17 | + android:id="@+id/btnClose" | |
18 | + android:src="@drawable/svg_close_24" | |
19 | + android:padding="8dp" | |
20 | + android:background="@drawable/shape_circle" | |
21 | + android:backgroundTint="#88FFFFFF" | |
22 | + android:layout_gravity="end" | |
23 | + android:layout_marginTop="40dp" | |
24 | + android:layout_marginEnd="16dp" | |
25 | + android:layout_width="28dp" | |
26 | + android:layout_height="28dp"/> | |
27 | + | |
28 | +</FrameLayout> | |
0 | 29 | \ No newline at end of file | ... | ... |
app/src/main/res/values/styles.xml
... | ... | @@ -66,6 +66,12 @@ |
66 | 66 | <item name="android:windowIsFloating">true</item> |
67 | 67 | </style> |
68 | 68 | |
69 | + <style name="BaseDialog.FullScreen"> | |
70 | + <item name="android:windowFullscreen">true</item> | |
71 | + <item name="android:windowIsTranslucent">true</item> | |
72 | + <item name="android:statusBarColor">@android:color/transparent</item> | |
73 | + </style> | |
74 | + | |
69 | 75 | <style name="tv_StudentHomeworkFilter"> |
70 | 76 | <item name="android:textSize">13sp</item> |
71 | 77 | <item name="android:textColor">@color/color_filter_state</item> | ... | ... |