Skip to content

Commit dae7a04

Browse files
committed
fix bug & update RootFragment
1 parent 53dd815 commit dae7a04

File tree

7 files changed

+90
-28
lines changed

7 files changed

+90
-28
lines changed

app/build.gradle

+6-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ android {
1212
targetSdkVersion rootProject.ext.android.targetSdkVersion
1313
versionCode rootProject.ext.android.versionCode
1414
versionName rootProject.ext.android.versionName
15-
15+
resConfigs "zh"
1616
multiDexEnabled true
1717
renderscriptTargetApi 23
1818
renderscriptSupportModeEnabled true
@@ -38,15 +38,17 @@ android {
3838
}
3939
}
4040

41-
defaultConfig {
42-
resConfigs "zh"
41+
packagingOptions {
42+
exclude "lib/mips/librealm-jni.so"
43+
exclude "lib/x86/librealm-jni.so"
44+
exclude "lib/x86_64/librealm-jni.so"
4345
}
4446

4547
splits {
4648
abi {
4749
enable true
4850
reset()
49-
include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'x86', 'x86_64'
51+
include 'armeabi', 'armeabi-v7a', 'arm64-v8a'
5052
universalApk true
5153
}
5254
}

app/src/main/java/com/codeest/geeknews/base/RootActivity.java

+16-8
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import android.view.View;
44
import android.view.ViewGroup;
5-
import android.widget.FrameLayout;
6-
import android.widget.LinearLayout;
75

86
import com.codeest.geeknews.R;
97
import com.codeest.geeknews.widget.ProgressImageView;
@@ -21,11 +19,13 @@ public abstract class RootActivity<T extends BasePresenter> extends BaseActivity
2119
private static final int STATE_ERROR = 0x02;
2220

2321
private ProgressImageView ivLoading;
24-
private LinearLayout viewError;
25-
private FrameLayout viewLoading;
22+
private View viewError;
23+
private View viewLoading;
2624
private ViewGroup viewMain;
2725
private ViewGroup mParent;
2826

27+
private int mErrorResource = R.layout.view_error;
28+
2929
private int currentState = STATE_MAIN;
3030
private boolean isErrorViewAdded = false;
3131

@@ -34,15 +34,15 @@ protected void initEventAndData() {
3434
viewMain = (ViewGroup) findViewById(R.id.view_main);
3535
if (viewMain == null) {
3636
throw new IllegalStateException(
37-
"The subclass of RootActivity must contain a View named view_main.");
37+
"The subclass of RootActivity must contain a View named 'view_main'.");
3838
}
3939
if (!(viewMain.getParent() instanceof ViewGroup)) {
4040
throw new IllegalStateException(
4141
"view_main's ParentView should be a ViewGroup.");
4242
}
4343
mParent = (ViewGroup) viewMain.getParent();
4444
View.inflate(mContext, R.layout.view_progress, mParent);
45-
viewLoading = (FrameLayout) mParent.findViewById(R.id.view_loading);
45+
viewLoading = mParent.findViewById(R.id.view_loading);
4646
ivLoading = (ProgressImageView) viewLoading.findViewById(R.id.iv_progress);
4747
viewLoading.setVisibility(View.GONE);
4848
viewMain.setVisibility(View.VISIBLE);
@@ -54,8 +54,12 @@ public void stateError() {
5454
return;
5555
if (!isErrorViewAdded) {
5656
isErrorViewAdded = true;
57-
View.inflate(mContext, R.layout.view_error, mParent);
58-
viewError = (LinearLayout) mParent.findViewById(R.id.view_error);
57+
View.inflate(mContext, mErrorResource, mParent);
58+
viewError = mParent.findViewById(R.id.view_error);
59+
if (viewError == null) {
60+
throw new IllegalStateException(
61+
"A View should be named 'view_error' in ErrorLayoutResource.");
62+
}
5963
}
6064
hideCurrentView();
6165
currentState = STATE_ERROR;
@@ -97,4 +101,8 @@ private void hideCurrentView() {
97101
break;
98102
}
99103
}
104+
105+
public void setErrorResource(int errorLayoutResource) {
106+
this.mErrorResource = errorLayoutResource;
107+
}
100108
}

app/src/main/java/com/codeest/geeknews/base/RootFragment.java

+16-8
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import android.view.View;
44
import android.view.ViewGroup;
5-
import android.widget.FrameLayout;
6-
import android.widget.LinearLayout;
75

86
import com.codeest.geeknews.R;
97
import com.codeest.geeknews.widget.ProgressImageView;
@@ -21,11 +19,13 @@ public abstract class RootFragment<T extends BasePresenter> extends BaseFragment
2119
private static final int STATE_ERROR = 0x02;
2220

2321
private ProgressImageView ivLoading;
24-
private LinearLayout viewError;
25-
private FrameLayout viewLoading;
22+
private View viewError;
23+
private View viewLoading;
2624
private ViewGroup viewMain;
2725
private ViewGroup mParent;
2826

27+
private int mErrorResource = R.layout.view_error;
28+
2929
private int currentState = STATE_MAIN;
3030
private boolean isErrorViewAdded = false;
3131

@@ -36,15 +36,15 @@ protected void initEventAndData() {
3636
viewMain = (ViewGroup) getView().findViewById(R.id.view_main);
3737
if (viewMain == null) {
3838
throw new IllegalStateException(
39-
"The subclass of RootActivity must contain a View named view_main.");
39+
"The subclass of RootActivity must contain a View named 'view_main'.");
4040
}
4141
if (!(viewMain.getParent() instanceof ViewGroup)) {
4242
throw new IllegalStateException(
4343
"view_main's ParentView should be a ViewGroup.");
4444
}
4545
mParent = (ViewGroup) viewMain.getParent();
4646
View.inflate(mContext, R.layout.view_progress, mParent);
47-
viewLoading = (FrameLayout) mParent.findViewById(R.id.view_loading);
47+
viewLoading = mParent.findViewById(R.id.view_loading);
4848
ivLoading = (ProgressImageView) viewLoading.findViewById(R.id.iv_progress);
4949
viewLoading.setVisibility(View.GONE);
5050
viewMain.setVisibility(View.VISIBLE);
@@ -56,8 +56,12 @@ public void stateError() {
5656
return;
5757
if (!isErrorViewAdded) {
5858
isErrorViewAdded = true;
59-
View.inflate(mContext, R.layout.view_error, mParent);
60-
viewError = (LinearLayout) mParent.findViewById(R.id.view_error);
59+
View.inflate(mContext, mErrorResource, mParent);
60+
viewError = mParent.findViewById(R.id.view_error);
61+
if (viewError == null) {
62+
throw new IllegalStateException(
63+
"A View should be named 'view_error' in ErrorLayoutResource.");
64+
}
6165
}
6266
hideCurrentView();
6367
currentState = STATE_ERROR;
@@ -99,4 +103,8 @@ private void hideCurrentView() {
99103
break;
100104
}
101105
}
106+
107+
public void setErrorResource(int errorLayoutResource) {
108+
this.mErrorResource = errorLayoutResource;
109+
}
102110
}

app/src/main/java/com/codeest/geeknews/model/http/exception/ApiException.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,23 @@
44
* Created by codeest on 2016/8/4.
55
*/
66
public class ApiException extends Exception{
7-
public ApiException(String msg)
8-
{
7+
8+
private int code;
9+
10+
public ApiException(String msg) {
11+
super(msg);
12+
}
13+
14+
public ApiException(String msg, int code) {
915
super(msg);
16+
this.code = code;
17+
}
18+
19+
public int getCode() {
20+
return code;
21+
}
22+
23+
public void setCode(int code) {
24+
this.code = code;
1025
}
1126
}

app/src/main/java/com/codeest/geeknews/ui/gank/activity/GirlDetailActivity.java

+31-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codeest.geeknews.ui.gank.activity;
22

3+
import android.Manifest;
34
import android.content.Intent;
45
import android.graphics.Bitmap;
56
import android.support.v7.widget.Toolbar;
@@ -18,8 +19,11 @@
1819
import com.codeest.geeknews.model.db.RealmHelper;
1920
import com.codeest.geeknews.util.ShareUtil;
2021
import com.codeest.geeknews.util.SystemUtil;
22+
import com.codeest.geeknews.util.ToastUtil;
23+
import com.tbruyelle.rxpermissions2.RxPermissions;
2124

2225
import butterknife.BindView;
26+
import io.reactivex.functions.Consumer;
2327
import uk.co.senab.photoview.PhotoViewAttacher;
2428

2529
/**
@@ -33,7 +37,11 @@ public class GirlDetailActivity extends SimpleActivity {
3337
@BindView(R.id.iv_girl_detail)
3438
ImageView ivGirlDetail;
3539

40+
private static int ACTION_SAVE = 0x00;
41+
private static int ACTION_SHARE = 0x01;
42+
3643
Bitmap bitmap;
44+
RxPermissions rxPermissions;
3745
RealmHelper mRealmHelper;
3846
PhotoViewAttacher mAttacher;
3947
MenuItem menuItem;
@@ -94,10 +102,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
94102
}
95103
break;
96104
case R.id.action_save:
97-
SystemUtil.saveBitmapToFile(mContext,url,bitmap,ivGirlDetail,false);
105+
checkPermissionAndAction(ACTION_SAVE);
98106
break;
99107
case R.id.action_share:
100-
ShareUtil.shareImage(mContext,SystemUtil.saveBitmapToFile(mContext,url,bitmap,ivGirlDetail,true),"分享一只妹纸");
108+
checkPermissionAndAction(ACTION_SHARE);
101109
break;
102110
}
103111
return super.onOptionsItemSelected(item);
@@ -121,4 +129,25 @@ public void onBackPressedSupport() {
121129
finishAfterTransition();
122130
}
123131
}
132+
133+
private void checkPermissionAndAction(final int action) {
134+
if (rxPermissions == null) {
135+
rxPermissions = new RxPermissions(this);
136+
}
137+
rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
138+
.subscribe(new Consumer<Boolean>() {
139+
@Override
140+
public void accept(Boolean granted) {
141+
if (granted) {
142+
if (action == ACTION_SAVE) {
143+
SystemUtil.saveBitmapToFile(mContext, url, bitmap, ivGirlDetail, false);
144+
} else if (action == ACTION_SHARE) {
145+
ShareUtil.shareImage(mContext, SystemUtil.saveBitmapToFile(mContext, url, bitmap, ivGirlDetail, true), "分享一只妹纸");
146+
}
147+
} else {
148+
ToastUtil.shortShow("获取写入权限失败");
149+
}
150+
}
151+
});
152+
}
124153
}

app/src/main/java/com/codeest/geeknews/util/RxUtil.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public Flowable<T> apply(WXHttpResponse<T> tWXHttpResponse) {
7373
if(tWXHttpResponse.getCode() == 200) {
7474
return createData(tWXHttpResponse.getNewslist());
7575
} else {
76-
return Flowable.error(new ApiException("服务器返回error"));
76+
return Flowable.error(new ApiException(tWXHttpResponse.getMsg(), tWXHttpResponse.getCode()));
7777
}
7878
}
7979
});
@@ -96,7 +96,7 @@ public Flowable<T> apply(MyHttpResponse<T> tMyHttpResponse) {
9696
if(tMyHttpResponse.getCode() == 200) {
9797
return createData(tMyHttpResponse.getData());
9898
} else {
99-
return Flowable.error(new ApiException("服务器返回error"));
99+
return Flowable.error(new ApiException(tMyHttpResponse.getMessage(), tMyHttpResponse.getCode()));
100100
}
101101
}
102102
});

app/src/main/java/com/codeest/geeknews/util/SystemUtil.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public static void copyToClipBoard(Context context, String text) {
7373
*/
7474
public static Uri saveBitmapToFile(Context context, String url, Bitmap bitmap,View container, boolean isShare){
7575
String fileName = url.substring(url.lastIndexOf("/"),url.lastIndexOf(".")) + ".png";
76-
File fileDir = new File(Constants.PATH_DATA);
76+
File fileDir = new File(Constants.PATH_SDCARD);
7777
if (!fileDir.exists()){
78-
fileDir.mkdir();
78+
fileDir.mkdirs();
7979
}
8080
File imageFile = new File(fileDir,fileName);
8181
Uri uri = Uri.fromFile(imageFile);

0 commit comments

Comments
 (0)