Skip to content

Commit 99baab0

Browse files
committed
新增常用ios风格的对话框,新增处理Activity多重跳转,对Adapter适配器基类进行解耦,更新第三方框架版本,修正MVP基类不规范的问题,修正一些小问题
1 parent 5ec9b27 commit 99baab0

File tree

138 files changed

+4511
-875
lines changed

Some content is hidden

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

138 files changed

+4511
-875
lines changed

API.md

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
#### MyActivity
2+
3+
> 所有的 Activity 必须继承至 MyActivity,如果使用 MVP 请继承至 MvpActivity,已经处理了 Activity 多重启动的问题,[详情可点击此处查看](https://www.jianshu.com/p/579f1f118161)
4+
5+
> 获取 Context 或者 Activity
6+
7+
public Context getContext()
8+
9+
public <A extends BaseActivity> A getActivity()
10+
11+
> startActivity 方法优化
12+
13+
public void startActivity(Class<? extends Activity> cls)
14+
15+
public void startActivityFinish(Class<? extends Activity> cls)
16+
17+
public void startActivityFinish(Intent intent)
18+
19+
> startActivityForResult 方法优化
20+
21+
public void startActivityForResult(Intent intent, ActivityCallback callback)
22+
23+
public void startActivityForResult(Intent intent, @Nullable Bundle options, ActivityCallback callback)
24+
25+
> setResult 方法优化
26+
27+
public void finishResult(int resultCode)
28+
29+
public void finishResult(int resultCode, Intent data)
30+
31+
> Activity 标题
32+
33+
public void setTitle(int titleId)
34+
35+
public void setTitle(CharSequence title)
36+
37+
public CharSequence getTitle()
38+
39+
> Toast 方法
40+
41+
public void toast(CharSequence s)
42+
43+
public void toast(int id)
44+
45+
public void toast(Object object)
46+
47+
> Handler 方法
48+
49+
public static Handler getHandler()
50+
51+
> TitleBar 方法
52+
53+
public TitleBar getTitleBar()
54+
55+
> TitleBar 监听方法(需要被重写)
56+
57+
// 标题栏左项被点击了,默认返回
58+
public void onLeftClick(View v)
59+
60+
// 标题栏中间项被点击了
61+
public void onTitleClick(View v)
62+
63+
// 标题栏右项被点击了
64+
public void onRightClick(View v)
65+
66+
#### MyFragment
67+
68+
> 获取Activity,防止出现 getActivity() 为空
69+
70+
public FragmentActivity getFragmentActivity()
71+
72+
> 是否进行了懒加载
73+
74+
protected boolean isLazyLoad()
75+
76+
> 当前 Fragment 是否可见
77+
78+
public boolean isFragmentVisible()
79+
80+
> 跟 Activity 的同名方法效果一样
81+
82+
protected void onRestart()
83+
84+
> 根据资源 id 获取一个 View 对象
85+
86+
protected <T extends View> T findViewById(@IdRes int id)
87+
88+
protected <T extends View> T findActivityViewById(@IdRes int id)
89+
90+
> 跳转到其他Activity
91+
92+
public void startActivity(Class<? extends Activity> cls)
93+
94+
> 销毁当前 Fragment 所在的 Activity
95+
96+
public void finish()
97+
98+
> 获取系统服务
99+
100+
public Object getSystemService(@NonNull String name)
101+
102+
> Fragment返回键被按下时回调(只做预留方法,没有效果)
103+
104+
public boolean onKeyDown(int keyCode, KeyEvent event)
105+
106+
> Toast 方法
107+
108+
public void toast(CharSequence s)
109+
110+
public void toast(int id)
111+
112+
public void toast(Object object)
113+
114+
##### MyRecyclerViewAdapter
115+
116+
> 获取 RecyclerView 或者 Context
117+
118+
public RecyclerView getRecyclerView()
119+
120+
public Context getContext()
121+
122+
> 布局摆放器(可以被重载,由于 RecyclerView 不能没有设置 LayoutManager,这里设置了默认的)
123+
124+
protected RecyclerView.LayoutManager getDefaultLayoutManager(Context context) {
125+
return new LinearLayoutManager(context);
126+
}
127+
128+
> 分页逻辑预留方法
129+
130+
public int getPageNumber()
131+
132+
public void setPageNumber(int pageNumber)
133+
134+
public boolean isLastPage()
135+
136+
public void setLastPage(boolean lastPage)
137+
138+
> 标记方法
139+
140+
public Object getTag()
141+
142+
public void setTag(Object tag)
143+
144+
> 操作数据集合
145+
146+
public void setData(List<T> data)
147+
148+
public List<T> getData()
149+
150+
public void addData(List<T> data)
151+
152+
public void clearData()
153+
154+
> 操作单个数据
155+
156+
public T getItem(int position)
157+
158+
public void setItem(int position, T item)
159+
160+
public void addItem(T item)
161+
162+
public void addItem(int position, T item)
163+
164+
public void removeItem(T item)
165+
166+
public void removeItem(int position)
167+
168+
> MyRecyclerViewAdapter.ViewHolder 方法
169+
170+
public final View getItemView()
171+
172+
public final <V extends View> V findViewById(@IdRes int viewId)
173+
174+
public final ViewHolder setText(@IdRes int viewId, @StringRes int resId)
175+
176+
public final ViewHolder setText(@IdRes int viewId, String text)
177+
178+
public final ViewHolder setVisibility(@IdRes int viewId, int visibility)
179+
180+
public final ViewHolder setColor(@IdRes int viewId, @ColorInt int color)
181+
182+
public final ViewHolder setImage(@IdRes int viewId, @DrawableRes int resId)
183+
184+
> 监听方法(必须在 RecyclerView.setAdapter 之前调用)
185+
186+
public void setOnItemClickListener(OnItemClickListener l)
187+
188+
public void setOnChildClickListener(@IdRes int childId, OnChildClickListener l)
189+
190+
public void setOnItemLongClickListener(OnItemLongClickListener l)
191+
192+
public void setOnChildLongClickListener(@IdRes int childId, OnChildLongClickListener l)
193+
194+
public void setOnScrollingListener(OnScrollingListener l)
195+
196+
> MyListViewAdapter 和 MyRecyclerViewAdapter 差不多,只不过没有上面这些监听方法,因为 ListView 本身已经自带这些了
197+

AndroidProject.apk

265 KB
Binary file not shown.

ProjectDetails.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
## Module 介绍
44

5-
> 这里的项目 Module 关系十分简单,只有两个
5+
> 这里的项目 Module 关系十分简单:
66
77
* app:关于 APP 功能实现的业务逻辑代码,集成了一些常用的框架
88

9-
* base:只存放关于技术实现的代码,不集成任何框架
9+
* base:定义一些常用的基类,不集成任何框架
1010

11-
* widget:自定义一些精品的 View
11+
* widget:自定义一些精品的 View,不集成任何框架
1212

13-
* umeng:集成友盟 SDK 相关文件
13+
* umeng:集成友盟 SDK 相关文件,不集成任何框架
1414

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

app/build.gradle

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ dependencies {
8989
implementation project(':widget')
9090
// 友盟
9191
implementation project(':umeng')
92+
// Dialog
93+
implementation project(':dialog')
9294

9395
// 示例:添加一个 aar 包
9496
// implementation(name: 'password_dialog', ext: 'aar')
@@ -102,24 +104,31 @@ dependencies {
102104
// Dex分包,解决 65k 问题
103105
implementation 'com.android.support:multidex:1.0.3'
104106

107+
// ButterKnife注解库:https://github.com/JakeWharton/butterknife
108+
implementation 'com.jakewharton:butterknife:9.0.0-rc1'
109+
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc1'
110+
105111
// 状态栏沉浸:https://github.com/gyf-dev/ImmersionBar
106-
implementation 'com.gyf.barlibrary:barlibrary:2.3.0'
112+
implementation 'com.gyf.immersionbar:immersionbar:2.3.3-beta09'
107113
// 侧滑功能:https://github.com/bingoogolapple/BGASwipeBackLayout-Android
108-
implementation 'cn.bingoogolapple:bga-swipebacklayout:1.1.9@aar'
114+
implementation 'cn.bingoogolapple:bga-swipebacklayout:1.2.0'
109115

110116
// 权限请求框架:https://github.com/getActivity/XXPermissions
111117
implementation 'com.hjq:xxpermissions:5.2'
112118
// 标题栏:https://github.com/getActivity/TitleBar
113-
implementation 'com.hjq:titlebar:3.5'
119+
implementation 'com.hjq:titlebar:5.0'
114120
// 吐司工具类:https://github.com/getActivity/ToastUtils
115-
implementation 'com.hjq:toast:5.0'
121+
implementation 'com.hjq:toast:5.2'
116122

117123
// 圆形的ImageView:https://github.com/hdodenhof/CircleImageView
118124
implementation 'de.hdodenhof:circleimageview:2.2.0'
119125

120-
// ButterKnife注解库:https://github.com/JakeWharton/butterknife
121-
implementation "com.jakewharton:butterknife:$rootProject.ext.butterknifeVersion"
122-
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.ext.butterknifeVersion"
126+
// RecyclerView:https://github.com/CymChad/BaseRecyclerViewAdapterHelper
127+
// 工具类集合:https://github.com/Blankj/AndroidUtilCode
128+
// 图片选择:https://github.com/zhihu/Matisse
129+
// 上拉下拉:https://github.com/bingoogolapple/BGARefreshLayout-Android
130+
// 轮播图:https://github.com/bingoogolapple/BGABanner-Android
131+
// 二维码:https://github.com/bingoogolapple/BGAQRCode-Android
123132
}
124133

125134
repositories {

app/proguard-rules.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@
221221

222222
########################################################
223223

224-
#友盟统计
224+
# 友盟统计
225225
-keep class com.umeng.** {*;}
226226
-keepclassmembers class * {
227227
public <init> (org.json.JSONObject);

app/src/main/AndroidManifest.xml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<uses-permission android:name="android.permission.INTERNET" />
1414

1515
<application
16-
android:name="com.hjq.demo.base.MyApplication"
16+
android:name=".common.MyApplication"
1717
android:icon="@mipmap/ic_launcher"
1818
android:label="@string/app_name"
1919
android:networkSecurityConfig="@xml/network_security_config"
@@ -22,7 +22,7 @@
2222

2323
<!-- 启动页面(因为使用了LauncherTheme,所以不要给这个Activity设置screenOrientation属性,会导致崩溃) -->
2424
<activity
25-
android:name="com.hjq.demo.ui.activity.LauncherActivity"
25+
android:name=".ui.activity.LauncherActivity"
2626
android:theme="@style/LauncherTheme">
2727

2828
<!-- 程序入口 -->
@@ -37,31 +37,34 @@
3737

3838
<!-- 主页界面 -->
3939
<activity
40-
android:name="com.hjq.demo.ui.activity.HomeActivity"
40+
android:name=".ui.activity.HomeActivity"
4141
android:alwaysRetainTaskState="true"
4242
android:launchMode="singleTop" />
4343

4444
<!-- 登录界面 -->
4545
<activity
46-
android:name="com.hjq.demo.ui.activity.LoginActivity"
46+
android:name=".ui.activity.LoginActivity"
4747
android:launchMode="singleTop" />
4848

4949
<!-- 注册界面 -->
5050
<activity
51-
android:name="com.hjq.demo.ui.activity.RegisterActivity"
51+
android:name=".ui.activity.RegisterActivity"
5252
android:launchMode="singleTop" />
5353

5454
<!-- 关于界面 -->
5555
<activity
56-
android:name="com.hjq.demo.ui.activity.AboutActivity"
56+
android:name=".ui.activity.AboutActivity"
5757
android:label="@string/about_text"
5858
android:launchMode="singleTop" />
5959

6060
<!-- 浏览器界面 -->
6161
<activity
62-
android:name="com.hjq.demo.ui.activity.WebActivity"
62+
android:name=".ui.activity.WebActivity"
6363
android:launchMode="singleTop" />
6464

65+
<!-- 对话框使用案例界面 -->
66+
<activity android:name=".ui.activity.DialogActivity" />
67+
6568
</application>
6669

6770
</manifest>

0 commit comments

Comments
 (0)