Skip to content

Commit 9256ddd

Browse files
committed
修复查看大图时崩溃的问题,优化应用启动速度,删除无用导包,优化代码逻辑
1 parent fe7162d commit 9256ddd

25 files changed

+190
-174
lines changed

AndroidProject.apk

-42.3 KB
Binary file not shown.

app/src/main/AndroidManifest.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
android:label="@string/web_title" />
108108

109109
<!-- 查看大图界面 -->
110-
<activity android:name=".ui.activity.ImageActivity" />
110+
<activity android:name=".ui.activity.PhotoActivity" />
111111

112112
<!-- 对话框界面 -->
113113
<activity android:name=".ui.activity.DialogActivity" />

app/src/main/java/com/hjq/demo/ui/activity/LauncherActivity.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ private void initStartAnim() {
8181
mTextView.startAnimation(ra);
8282
}
8383

84-
private void requestFilePermission() {
84+
private void requestPermission() {
8585
XXPermissions.with(this)
8686
.permission(Permission.Group.STORAGE)
8787
.request(this);
@@ -102,14 +102,14 @@ public void noPermission(List<String> denied, boolean quick) {
102102
if (quick) {
103103
toast("没有权限访问文件,请手动授予权限");
104104
XXPermissions.gotoPermissionSettings(LauncherActivity.this, true);
105-
}else {
105+
} else {
106106
toast("请先授予文件读写权限");
107-
getWindow().getDecorView().postDelayed(new Runnable() {
107+
postDelayed(new Runnable() {
108108
@Override
109109
public void run() {
110-
requestFilePermission();
110+
requestPermission();
111111
}
112-
}, 2000);
112+
}, 1000);
113113
}
114114
}
115115

@@ -125,7 +125,7 @@ protected void onRestart() {
125125
if (XXPermissions.isHasPermission(LauncherActivity.this, Permission.Group.STORAGE)) {
126126
hasPermission(null, true);
127127
}else {
128-
requestFilePermission();
128+
requestPermission();
129129
}
130130
}
131131

@@ -144,7 +144,7 @@ public void onAnimationStart(Animation animation) {}
144144

145145
@Override
146146
public void onAnimationEnd(Animation animation) {
147-
requestFilePermission();
147+
requestPermission();
148148
}
149149

150150
@Override

app/src/main/java/com/hjq/demo/ui/activity/PersonalDataActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* author : Android 轮子哥
1818
* github : https://github.com/getActivity/AndroidProject
1919
* time : 2019/04/20
20-
* desc : 个人资料界面
20+
* desc : 个人资料
2121
*/
2222
public final class PersonalDataActivity extends MyActivity {
2323

Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
1-
package com.hjq.demo.ui.activity;
2-
3-
import android.support.v4.view.ViewPager;
4-
5-
import com.hjq.demo.R;
6-
import com.hjq.demo.common.MyActivity;
7-
import com.hjq.demo.ui.adapter.ImagePagerAdapter;
8-
9-
import java.util.ArrayList;
10-
11-
import butterknife.BindView;
12-
13-
/**
14-
* author : Android 轮子哥
15-
* github : https://github.com/getActivity/AndroidProject
16-
* time : 2019/03/05
17-
* desc : 查看大图
18-
*/
19-
public final class ImageActivity extends MyActivity {
20-
21-
@BindView(R.id.vp_image_pager)
22-
ViewPager mViewPager;
23-
24-
@Override
25-
protected int getLayoutId() {
26-
return R.layout.activity_image;
27-
}
28-
29-
@Override
30-
protected int getTitleId() {
31-
return 0;
32-
}
33-
34-
@Override
35-
protected void initView() {
36-
37-
}
38-
39-
@Override
40-
protected void initData() {
41-
ArrayList<String> data = new ArrayList<>();
42-
data.add("https://www.baidu.com/img/bd_logo.png");
43-
data.add("https://www.baidu.com/img/bd_logo.png");
44-
data.add("https://www.baidu.com/img/bd_logo.png");
45-
mViewPager.setAdapter(new ImagePagerAdapter(this, data));
46-
}
47-
48-
@Override
49-
public boolean statusBarDarkFont() {
50-
return !super.statusBarDarkFont();
51-
}
1+
package com.hjq.demo.ui.activity;
2+
3+
import android.support.v4.view.ViewPager;
4+
5+
import com.hjq.demo.R;
6+
import com.hjq.demo.common.MyActivity;
7+
import com.hjq.demo.ui.adapter.PhotoPagerAdapter;
8+
9+
import java.util.ArrayList;
10+
11+
import butterknife.BindView;
12+
13+
/**
14+
* author : Android 轮子哥
15+
* github : https://github.com/getActivity/AndroidProject
16+
* time : 2019/03/05
17+
* desc : 查看大图
18+
*/
19+
public final class PhotoActivity extends MyActivity {
20+
21+
@BindView(R.id.vp_photo_pager)
22+
ViewPager mViewPager;
23+
24+
@Override
25+
protected int getLayoutId() {
26+
return R.layout.activity_photo;
27+
}
28+
29+
@Override
30+
protected int getTitleId() {
31+
return 0;
32+
}
33+
34+
@Override
35+
protected void initView() {
36+
37+
}
38+
39+
@Override
40+
protected void initData() {
41+
ArrayList<String> data = new ArrayList<>();
42+
data.add("https://www.baidu.com/img/bd_logo.png");
43+
data.add("https://www.baidu.com/img/bd_logo.png");
44+
data.add("https://www.baidu.com/img/bd_logo.png");
45+
mViewPager.setAdapter(new PhotoPagerAdapter(this, data));
46+
}
47+
48+
@Override
49+
public boolean statusBarDarkFont() {
50+
return !super.statusBarDarkFont();
51+
}
5252
}

app/src/main/java/com/hjq/demo/ui/activity/SettingActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import com.hjq.demo.common.MyActivity;
77
import com.hjq.demo.helper.ActivityStackManager;
88
import com.hjq.demo.helper.CacheDataManager;
9-
import com.hjq.widget.SettingBar;
109
import com.hjq.image.ImageLoader;
10+
import com.hjq.widget.SettingBar;
1111
import com.hjq.widget.SwitchButton;
1212

1313
import butterknife.BindView;

app/src/main/java/com/hjq/demo/ui/activity/WebActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ protected void initView() {
6767
}
6868

6969
// 加快HTML网页加载完成的速度,等页面finish再加载图片
70-
if(Build.VERSION.SDK_INT >= 19) {
70+
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
7171
settings.setLoadsImagesAutomatically(true);
7272
} else {
7373
settings.setLoadsImagesAutomatically(false);
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,71 @@
1-
package com.hjq.demo.ui.adapter;
2-
3-
import android.app.Activity;
4-
import android.support.annotation.NonNull;
5-
import android.support.v4.view.PagerAdapter;
6-
import android.view.View;
7-
import android.view.ViewGroup;
8-
9-
import com.github.chrisbanes.photoview.PhotoView;
10-
import com.hjq.image.ImageLoader;
11-
12-
import java.util.List;
13-
14-
/**
15-
* author : Android 轮子哥
16-
* github : https://github.com/getActivity/AndroidProject
17-
* time : 2019/03/05
18-
* desc : 图片加载适配器
19-
*/
20-
public final class ImagePagerAdapter extends PagerAdapter implements View.OnClickListener {
21-
22-
private Activity mActivity;
23-
private List<String> mData;
24-
25-
public ImagePagerAdapter(Activity activity, List<String> data) {
26-
mActivity = activity;
27-
mData = data;
28-
}
29-
30-
// 加载数量,自动回调
31-
@Override
32-
public int getCount() {
33-
return mData.size();
34-
}
35-
36-
// 返回真表示不会重新创建,使用缓存加载。返回假则重新创建
37-
@Override
38-
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
39-
return view == object;
40-
}
41-
42-
/**
43-
* 实例化条目
44-
* ViewPager预加载机制:最多保存3个page,超过的将需要被销毁掉
45-
* 由于最多3个page,所以不需要设置ViewHolder
46-
* 用于将数据设置给ViewItem
47-
*/
48-
49-
@NonNull
50-
@Override
51-
public Object instantiateItem(@NonNull ViewGroup container, int position) {
52-
PhotoView view = new PhotoView(mActivity);
53-
view.setOnClickListener(this);
54-
ImageLoader.loadImage(view, mData.get(position));
55-
// 将View添加到ViewPager
56-
container.addView(view);
57-
return view;
58-
}
59-
60-
// 销毁条目
61-
@Override
62-
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
63-
container.removeView((View) object);
64-
}
65-
66-
@Override
67-
public void onClick(View v) {
68-
// 点击退出当前的 Activity
69-
mActivity.finish();
70-
}
1+
package com.hjq.demo.ui.adapter;
2+
3+
import android.app.Activity;
4+
import android.support.annotation.NonNull;
5+
import android.support.v4.view.PagerAdapter;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
9+
import com.github.chrisbanes.photoview.PhotoView;
10+
import com.hjq.image.ImageLoader;
11+
12+
import java.util.List;
13+
14+
/**
15+
* author : Android 轮子哥
16+
* github : https://github.com/getActivity/AndroidProject
17+
* time : 2019/03/05
18+
* desc : 图片加载适配器
19+
*/
20+
public final class PhotoPagerAdapter extends PagerAdapter implements View.OnClickListener {
21+
22+
private Activity mActivity;
23+
private List<String> mData;
24+
25+
public PhotoPagerAdapter(Activity activity, List<String> data) {
26+
mActivity = activity;
27+
mData = data;
28+
}
29+
30+
// 加载数量,自动回调
31+
@Override
32+
public int getCount() {
33+
return mData.size();
34+
}
35+
36+
// 返回真表示不会重新创建,使用缓存加载。返回假则重新创建
37+
@Override
38+
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
39+
return view == object;
40+
}
41+
42+
/**
43+
* 实例化条目
44+
* ViewPager预加载机制:最多保存3个page,超过的将需要被销毁掉
45+
* 由于最多3个page,所以不需要设置ViewHolder
46+
* 用于将数据设置给ViewItem
47+
*/
48+
49+
@NonNull
50+
@Override
51+
public Object instantiateItem(@NonNull ViewGroup container, int position) {
52+
PhotoView view = new PhotoView(mActivity);
53+
view.setOnClickListener(this);
54+
ImageLoader.loadImage(view, mData.get(position));
55+
// 将View添加到ViewPager
56+
container.addView(view);
57+
return view;
58+
}
59+
60+
// 销毁条目
61+
@Override
62+
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
63+
container.removeView((View) object);
64+
}
65+
66+
@Override
67+
public void onClick(View v) {
68+
// 点击退出当前的 Activity
69+
mActivity.finish();
70+
}
7171
}

app/src/main/java/com/hjq/demo/ui/fragment/TestFragmentA.java

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.support.design.widget.AppBarLayout;
44
import android.support.v7.widget.Toolbar;
5-
import android.view.KeyEvent;
65
import android.widget.TextView;
76

87
import com.gyf.barlibrary.ImmersionBar;

app/src/main/java/com/hjq/demo/ui/fragment/TestFragmentD.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.hjq.demo.ui.activity.AboutActivity;
1111
import com.hjq.demo.ui.activity.DialogActivity;
1212
import com.hjq.demo.ui.activity.HomeActivity;
13-
import com.hjq.demo.ui.activity.ImageActivity;
13+
import com.hjq.demo.ui.activity.PhotoActivity;
1414
import com.hjq.demo.ui.activity.LoginActivity;
1515
import com.hjq.demo.ui.activity.PasswordForgetActivity;
1616
import com.hjq.demo.ui.activity.PasswordResetActivity;
@@ -99,7 +99,7 @@ public void onClick(View v) {
9999
startActivity(WebActivity.class);
100100
break;
101101
case R.id.btn_test_image:
102-
startActivity(ImageActivity.class);
102+
startActivity(PhotoActivity.class);
103103
break;
104104
case R.id.btn_test_pay:
105105
new MessageDialog.Builder(getBindingActivity())
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.hjq.demo.widget;
2+
3+
import android.content.Context;
4+
import android.support.v4.view.ViewPager;
5+
import android.util.AttributeSet;
6+
import android.view.MotionEvent;
7+
8+
/**
9+
* author : Android 轮子哥
10+
* github : https://github.com/getActivity/AndroidProject
11+
* time : 2019/05/07
12+
* desc : ViewPager 中使用 PhotoView 时出现 pointerIndex out of range 异常
13+
*/
14+
public final class PhotoViewPager extends ViewPager {
15+
16+
public PhotoViewPager(Context context) {
17+
super(context);
18+
}
19+
20+
public PhotoViewPager(Context context, AttributeSet attrs) {
21+
super(context, attrs);
22+
}
23+
24+
@Override
25+
public boolean onInterceptTouchEvent(MotionEvent ev) {
26+
// 当PhotoView 和 ViewPager 组合时 ,用双指进行放大时 是没有问题的,但是用双指进行缩小的时候,程序就会崩掉
27+
// 并且抛出java.lang.IllegalArgumentException: pointerIndex out of range
28+
try {
29+
return super.onInterceptTouchEvent(ev);
30+
} catch (IllegalArgumentException | ArrayIndexOutOfBoundsException ignored) {
31+
return false;
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)