Skip to content

Commit 5ec9b27

Browse files
committed
重新调整项目架构,拆分成多个Moduel
1 parent 73b9a47 commit 5ec9b27

File tree

108 files changed

+4362
-4137
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+4362
-4137
lines changed

ProjectDetails.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
77
* app:关于 APP 功能实现的业务逻辑代码,集成了一些常用的框架
88

9-
* baselibrary:只存放关于技术实现的代码,不集成任何框架
9+
* base:只存放关于技术实现的代码,不集成任何框架
10+
11+
* widget:自定义一些精品的 View
12+
13+
* umeng:集成友盟 SDK 相关文件
1014

1115
> 本项目基于最新的 Android SDK 28 编译,[点击此处查看配置](build.gradle),最低安装要求为 Android 4.0
1216

app/build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,12 @@ dependencies {
8484
// 依赖 libs 目录下所有 Jar 包
8585
implementation fileTree(include: ['*.jar'], dir: 'libs')
8686
// 基础库(不包任何第三方框架)
87-
implementation project(':baselibrary')
87+
implementation project(':base')
88+
// 自定义 View
89+
implementation project(':widget')
90+
// 友盟
91+
implementation project(':umeng')
92+
8893
// 示例:添加一个 aar 包
8994
// implementation(name: 'password_dialog', ext: 'aar')
9095

@@ -115,9 +120,6 @@ dependencies {
115120
// ButterKnife注解库:https://github.com/JakeWharton/butterknife
116121
implementation "com.jakewharton:butterknife:$rootProject.ext.butterknifeVersion"
117122
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.ext.butterknifeVersion"
118-
119-
// 友盟统计
120-
compileOnly 'com.umeng.analytics:analytics:6.1.4'
121123
}
122124

123125
repositories {

app/libs/umeng-analytics-v6.1.2.jar

-315 KB
Binary file not shown.

app/proguard-rules.pro

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,6 @@
195195
public void openFileChooser(...);
196196
}
197197

198-
#友盟统计
199-
-keepclassmembers class * {
200-
public <init> (org.json.JSONObject);
201-
}
202-
203198
#极光推送
204199
-dontoptimize
205200
-dontpreverify
@@ -225,3 +220,17 @@
225220
-keep public class android.support.design.R$* { *; }
226221

227222
########################################################
223+
224+
#友盟统计
225+
-keep class com.umeng.** {*;}
226+
-keepclassmembers class * {
227+
public <init> (org.json.JSONObject);
228+
}
229+
-keepclassmembers enum * {
230+
public static **[] values();
231+
public static ** valueOf(java.lang.String);
232+
}
233+
234+
-keep public class [您的应用包名].R$*{
235+
public static final int *;
236+
}

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,17 @@
1212
<!-- 联网权限 -->
1313
<uses-permission android:name="android.permission.INTERNET" />
1414

15-
<!-- 友盟统计 -->
16-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
17-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
18-
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
19-
2015
<application
21-
android:name=".common.CommonApplication"
16+
android:name="com.hjq.demo.base.MyApplication"
2217
android:icon="@mipmap/ic_launcher"
2318
android:label="@string/app_name"
2419
android:networkSecurityConfig="@xml/network_security_config"
2520
android:roundIcon="@mipmap/ic_launcher"
2621
android:theme="@style/AppTheme">
2722

28-
<!-- 友盟统计 -->
29-
<meta-data
30-
android:name="UMENG_APPKEY"
31-
android:value="XXXXXXXXXXXXXXXXXXXXXXXX" /><!-- 要注意更换key -->
32-
33-
<!-- 友盟多渠道打包 -->
34-
<meta-data
35-
android:name="UMENG_CHANNEL"
36-
android:value="${UMENG_CHANNEL_VALUE}" />
37-
3823
<!-- 启动页面(因为使用了LauncherTheme,所以不要给这个Activity设置screenOrientation属性,会导致崩溃) -->
3924
<activity
40-
android:name=".ui.activity.LauncherActivity"
25+
android:name="com.hjq.demo.ui.activity.LauncherActivity"
4126
android:theme="@style/LauncherTheme">
4227

4328
<!-- 程序入口 -->
@@ -52,29 +37,29 @@
5237

5338
<!-- 主页界面 -->
5439
<activity
55-
android:name=".ui.activity.HomeActivity"
40+
android:name="com.hjq.demo.ui.activity.HomeActivity"
5641
android:alwaysRetainTaskState="true"
5742
android:launchMode="singleTop" />
5843

5944
<!-- 登录界面 -->
6045
<activity
61-
android:name=".ui.activity.LoginActivity"
46+
android:name="com.hjq.demo.ui.activity.LoginActivity"
6247
android:launchMode="singleTop" />
6348

6449
<!-- 注册界面 -->
6550
<activity
66-
android:name=".ui.activity.RegisterActivity"
51+
android:name="com.hjq.demo.ui.activity.RegisterActivity"
6752
android:launchMode="singleTop" />
6853

6954
<!-- 关于界面 -->
7055
<activity
71-
android:name=".ui.activity.AboutActivity"
56+
android:name="com.hjq.demo.ui.activity.AboutActivity"
7257
android:label="@string/about_text"
7358
android:launchMode="singleTop" />
7459

7560
<!-- 浏览器界面 -->
7661
<activity
77-
android:name=".ui.activity.WebActivity"
62+
android:name="com.hjq.demo.ui.activity.WebActivity"
7863
android:launchMode="singleTop" />
7964

8065
</application>
Original file line numberDiff line numberDiff line change
@@ -1,133 +1,129 @@
1-
package com.hjq.demo.common;
2-
3-
import android.content.pm.ActivityInfo;
4-
import android.view.View;
5-
6-
import com.hjq.bar.OnTitleBarListener;
7-
import com.hjq.bar.TitleBar;
8-
import com.hjq.toast.ToastUtils;
9-
import com.umeng.analytics.MobclickAgent;
10-
11-
import butterknife.ButterKnife;
12-
import butterknife.Unbinder;
13-
14-
/**
15-
* author : HJQ
16-
* github : https://github.com/getActivity/AndroidProject
17-
* time : 2018/10/18
18-
* desc : 项目中的Activity基类
19-
*/
20-
public abstract class CommonActivity extends UIActivity
21-
implements OnTitleBarListener {
22-
23-
private Unbinder mButterKnife;//View注解
24-
25-
@Override
26-
public void init() {
27-
28-
//初始化标题栏的监听
29-
if (getTitleBarId() > 0) {
30-
if (findViewById(getTitleBarId()) instanceof TitleBar) {
31-
((TitleBar) findViewById(getTitleBarId())).setOnTitleBarListener(this);
32-
}
33-
}
34-
35-
mButterKnife = ButterKnife.bind(this);
36-
37-
initOrientation();
38-
39-
super.init();
40-
}
41-
42-
/**
43-
* 初始化横竖屏方向,会和 LauncherTheme 主题样式有冲突,注意不要同时使用
44-
*/
45-
protected void initOrientation() {
46-
//如果没有指定屏幕方向,则默认为竖屏
47-
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
48-
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
49-
}
50-
}
51-
52-
/**
53-
* 设置标题栏的标题
54-
*/
55-
@Override
56-
public void setTitle(int titleId) {
57-
setTitle(getText(titleId));
58-
}
59-
60-
/**
61-
* 设置标题栏的标题
62-
*/
63-
@Override
64-
public void setTitle(CharSequence title) {
65-
super.setTitle(title);
66-
TitleBar titleBar = getTitleBar();
67-
if (titleBar != null) {
68-
titleBar.setTitle(title);
69-
}
70-
}
71-
72-
protected TitleBar getTitleBar() {
73-
if (getTitleBarId() > 0 && findViewById(getTitleBarId()) instanceof TitleBar) {
74-
return findViewById(getTitleBarId());
75-
}
76-
return null;
77-
}
78-
79-
@Override
80-
public boolean statusBarDarkFont() {
81-
//返回true表示黑色字体
82-
return true;
83-
}
84-
85-
/**
86-
* {@link OnTitleBarListener}
87-
*/
88-
89-
// 标题栏左边的View被点击了
90-
@Override
91-
public void onLeftClick(View v) {
92-
onBackPressed();
93-
}
94-
95-
// 标题栏中间的View被点击了
96-
@Override
97-
public void onTitleClick(View v) {}
98-
99-
// 标题栏右边的View被点击了
100-
@Override
101-
public void onRightClick(View v) {}
102-
103-
@Override
104-
protected void onResume() {
105-
super.onResume();
106-
// 手动统计页面
107-
MobclickAgent.onPageStart(getClass().getSimpleName());
108-
// 友盟统计
109-
MobclickAgent.onResume(this);
110-
}
111-
112-
@Override
113-
protected void onPause() {
114-
super.onPause();
115-
// 手动统计页面,必须保证 onPageEnd 在 onPause 之前调用,因为SDK会在 onPause 中保存onPageEnd统计到的页面数据
116-
MobclickAgent.onPageEnd(getClass().getSimpleName());
117-
// 友盟统计
118-
MobclickAgent.onPause(this);
119-
}
120-
121-
@Override
122-
protected void onDestroy() {
123-
super.onDestroy();
124-
if (mButterKnife != null) mButterKnife.unbind();
125-
}
126-
127-
/**
128-
* 显示一个吐司
129-
*/
130-
public void toast(CharSequence s) {
131-
ToastUtils.show(s);
132-
}
1+
package com.hjq.demo.base;
2+
3+
import android.content.pm.ActivityInfo;
4+
import android.view.View;
5+
6+
import com.hjq.bar.OnTitleBarListener;
7+
import com.hjq.bar.TitleBar;
8+
import com.hjq.toast.ToastUtils;
9+
import com.hjq.umeng.UmengHelper;
10+
11+
import butterknife.ButterKnife;
12+
import butterknife.Unbinder;
13+
14+
/**
15+
* author : HJQ
16+
* github : https://github.com/getActivity/AndroidProject
17+
* time : 2018/10/18
18+
* desc : 项目中的Activity基类
19+
*/
20+
public abstract class MyActivity extends UIActivity
21+
implements OnTitleBarListener {
22+
23+
private Unbinder mButterKnife;//View注解
24+
25+
@Override
26+
public void init() {
27+
28+
//初始化标题栏的监听
29+
if (getTitleBarId() > 0) {
30+
if (findViewById(getTitleBarId()) instanceof TitleBar) {
31+
((TitleBar) findViewById(getTitleBarId())).setOnTitleBarListener(this);
32+
}
33+
}
34+
35+
mButterKnife = ButterKnife.bind(this);
36+
37+
initOrientation();
38+
39+
super.init();
40+
}
41+
42+
/**
43+
* 初始化横竖屏方向,会和 LauncherTheme 主题样式有冲突,注意不要同时使用
44+
*/
45+
protected void initOrientation() {
46+
//如果没有指定屏幕方向,则默认为竖屏
47+
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
48+
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
49+
}
50+
}
51+
52+
/**
53+
* 设置标题栏的标题
54+
*/
55+
@Override
56+
public void setTitle(int titleId) {
57+
setTitle(getText(titleId));
58+
}
59+
60+
/**
61+
* 设置标题栏的标题
62+
*/
63+
@Override
64+
public void setTitle(CharSequence title) {
65+
super.setTitle(title);
66+
TitleBar titleBar = getTitleBar();
67+
if (titleBar != null) {
68+
titleBar.setTitle(title);
69+
}
70+
}
71+
72+
protected TitleBar getTitleBar() {
73+
if (getTitleBarId() > 0 && findViewById(getTitleBarId()) instanceof TitleBar) {
74+
return findViewById(getTitleBarId());
75+
}
76+
return null;
77+
}
78+
79+
@Override
80+
public boolean statusBarDarkFont() {
81+
//返回true表示黑色字体
82+
return true;
83+
}
84+
85+
/**
86+
* {@link OnTitleBarListener}
87+
*/
88+
89+
// 标题栏左边的View被点击了
90+
@Override
91+
public void onLeftClick(View v) {
92+
onBackPressed();
93+
}
94+
95+
// 标题栏中间的View被点击了
96+
@Override
97+
public void onTitleClick(View v) {}
98+
99+
// 标题栏右边的View被点击了
100+
@Override
101+
public void onRightClick(View v) {}
102+
103+
@Override
104+
protected void onResume() {
105+
super.onResume();
106+
// 友盟统计
107+
UmengHelper.onResume(this);
108+
}
109+
110+
@Override
111+
protected void onPause() {
112+
super.onPause();
113+
// 友盟统计
114+
UmengHelper.onPause(this);
115+
}
116+
117+
@Override
118+
protected void onDestroy() {
119+
super.onDestroy();
120+
if (mButterKnife != null) mButterKnife.unbind();
121+
}
122+
123+
/**
124+
* 显示一个吐司
125+
*/
126+
public void toast(CharSequence s) {
127+
ToastUtils.show(s);
128+
}
133129
}

0 commit comments

Comments
 (0)