Skip to content
This repository was archived by the owner on Apr 12, 2018. It is now read-only.

Commit 5ba6087

Browse files
committed
1、更新沉浸实现方式并增加4.4半透明效果优化Demo效果
1 parent 06a6a8d commit 5ba6087

File tree

14 files changed

+471
-114
lines changed

14 files changed

+471
-114
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ allprojects {
1717

1818
```
1919
dependencies {
20-
// compile 'com.github.AriesHoo:TitleBarView:1.2.0'
20+
// compile 'com.github.AriesHoo:TitleBarView:1.3.0'
2121
compile 'com.github.AriesHoo:TitleBarView:${LATEST_VERSION}'
2222
}
2323
```
@@ -43,4 +43,7 @@ dependencies {
4343
三、鸣谢
4444

4545
1、[titlebar](https://github.com/bacy/titlebar)
46+
4647
2、[TitleBarLibs](https://github.com/sandalli/TitleBarLibs)
48+
49+
2、[StatusBarUtil](https://github.com/laobie/StatusBarUtil)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.aries.title;
2+
3+
import android.app.Activity;
4+
import android.support.v7.widget.LinearLayoutManager;
5+
import android.support.v7.widget.RecyclerView;
6+
import android.view.View;
7+
8+
import com.aries.title.adapter.DrawerAdapter;
9+
import com.aries.title.entity.DrawerEntity;
10+
import com.aries.title.util.AppUtil;
11+
import com.chad.library.adapter.base.BaseQuickAdapter;
12+
import com.chad.library.adapter.base.listener.OnItemClickListener;
13+
14+
import java.util.List;
15+
16+
/**
17+
* Created: AriesHoo on 2017/7/17 17:26
18+
* Function: 抽屉栏控制类
19+
* Desc:
20+
*/
21+
public class DrawerHelper {
22+
private static volatile DrawerHelper instance;
23+
24+
private DrawerHelper() {
25+
}
26+
27+
public static DrawerHelper getInstance() {
28+
if (instance == null) {
29+
synchronized (DrawerHelper.class) {
30+
if (instance == null) {
31+
instance = new DrawerHelper();
32+
}
33+
}
34+
}
35+
return instance;
36+
}
37+
38+
public void initRecyclerView(final Activity mContext, RecyclerView mRecyclerViewDrawer, List<DrawerEntity> list) {
39+
final BaseQuickAdapter mAdapterDrawer = new DrawerAdapter(mContext);
40+
mRecyclerViewDrawer.setLayoutManager(new LinearLayoutManager(mContext));
41+
mRecyclerViewDrawer.setAdapter(mAdapterDrawer);
42+
mRecyclerViewDrawer.addOnItemTouchListener(new OnItemClickListener() {
43+
@Override
44+
public void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position) {
45+
DrawerEntity entity = (DrawerEntity) mAdapterDrawer.getItem(position);
46+
AppUtil.startBorwer(mContext, entity.url);
47+
}
48+
});
49+
mAdapterDrawer.setNewData(list);
50+
}
51+
}

app/src/main/java/com/aries/title/MainActivity.java

Lines changed: 88 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,22 @@
44
import android.os.Build;
55
import android.os.Bundle;
66
import android.support.v4.widget.DrawerLayout;
7+
import android.support.v7.widget.RecyclerView;
78
import android.support.v7.widget.SwitchCompat;
89
import android.view.View;
910
import android.widget.CompoundButton;
11+
import android.widget.FrameLayout;
1012
import android.widget.ScrollView;
13+
import android.widget.SeekBar;
14+
import android.widget.TextView;
1115

1216
import com.aries.title.adapter.TitleAdapter;
1317
import com.aries.title.base.BaseRecycleActivity;
18+
import com.aries.title.entity.DrawerEntity;
1419
import com.aries.title.entity.TitleEntity;
20+
import com.aries.title.util.ViewUtil;
1521
import com.aries.ui.view.title.StatusBarUtil;
22+
import com.aries.ui.view.title.TitleBarView;
1623
import com.chad.library.adapter.base.BaseQuickAdapter;
1724
import com.chad.library.adapter.base.BaseViewHolder;
1825

@@ -30,16 +37,24 @@ public class MainActivity extends BaseRecycleActivity<TitleEntity> {
3037

3138
@BindView(R.id.drawer_root) DrawerLayout drawerRoot;
3239
@BindView(R.id.sv_slide) ScrollView svSlide;
40+
@BindView(R.id.titleBarDrawer) TitleBarView titleBarDrawer;
41+
@BindView(R.id.fLayout_drawer) FrameLayout fLayoutDrawer;
42+
@BindView(R.id.rv_contentDrawer) RecyclerView mRecyclerViewDrawer;
3343
private SwitchCompat sBtnImmersible;
3444
private SwitchCompat sBtnLight;
3545
private SwitchCompat sBtnLine;
46+
private SeekBar sBarAlpha;
47+
private TextView tvStatusAlpha;
48+
3649
private boolean isImmersible = true;
3750
private boolean isLight = true;
3851
private boolean canImmersible = true;
3952
private boolean canLight = true;
4053

4154
private BaseQuickAdapter mAdapter;
55+
private BaseQuickAdapter mAdapterDrawer;
4256
protected View vHeader;
57+
private int mAlpha = 102;
4358

4459
@Override
4560
protected boolean setLoadMore() {
@@ -79,17 +94,26 @@ protected void loadData(int page) {
7994
@Override
8095
protected void initView(Bundle bundle) {
8196
super.initView(bundle);
97+
titleBarDrawer.setImmersible(mContext, isImmersible, isLight);
8298
vHeader = View.inflate(mContext, R.layout.layout_title_header, null);
8399
sBtnImmersible = (SwitchCompat) vHeader.findViewById(R.id.sBtn_immersible);
84100
sBtnLight = (SwitchCompat) vHeader.findViewById(R.id.sBtn_light);
85101
sBtnLine = (SwitchCompat) vHeader.findViewById(R.id.sBtn_line);
86-
svSlide.setFitsSystemWindows(true);//drawer视图设置
87-
canImmersible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
88-
canLight = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
102+
sBarAlpha = (SeekBar) vHeader.findViewById(R.id.sBar_alpha);
103+
tvStatusAlpha = (TextView) vHeader.findViewById(R.id.tv_statusAlpha);
89104
initView();
105+
setDrawerList();
90106
initData();
91107
}
92108

109+
private void setDrawerList() {
110+
List<DrawerEntity> listDrawer = new ArrayList<>();
111+
listDrawer.add(new DrawerEntity("AriesHoo", "点击跳转GitHub个人主页", "https://github.com/AriesHoo"));
112+
listDrawer.add(new DrawerEntity("TitleBarView", "点击跳转GitHub项目页", "https://github.com/AriesHoo/TitleBarView"));
113+
listDrawer.add(new DrawerEntity("UIWidget", "点击跳转GitHub项目页", "https://github.com/AriesHoo/UIWidget"));
114+
DrawerHelper.getInstance().initRecyclerView(mContext, mRecyclerViewDrawer, listDrawer);
115+
}
116+
93117
private void initData() {
94118
List<TitleEntity> list = new ArrayList<>();
95119
list.add(new TitleEntity("TitleBarView与底部EditText结合", "点击查看示例", TitleEditActivity.class));
@@ -101,9 +125,12 @@ private void initData() {
101125
list.add(new TitleEntity("紫色主题", "点击切换紫色主题", android.R.color.holo_purple));
102126
mAdapter.setHeaderView(vHeader);
103127
mAdapter.setNewData(list);
128+
ViewUtil.getInstance().setViewHeight(fLayoutDrawer, (int) (getResources().getDimension(R.dimen.dp_drawer_header)) + titleBar.getStatusBarHeight());
104129
}
105130

106131
private void initView() {
132+
canImmersible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
133+
canLight = canImmersible;
107134
if (!canImmersible) {
108135
sBtnImmersible.setClickable(false);
109136
sBtnImmersible.setChecked(false);
@@ -114,19 +141,26 @@ private void initView() {
114141
if (!canLight) {
115142
sBtnLight.setClickable(false);
116143
sBtnLight.setChecked(false);
117-
sBtnLight.setText("5.0以下不支持全透明");
144+
sBtnLight.setText("4.4以下不支持全透明");
118145
}
146+
sBarAlpha.setMax(255);
119147
sBtnImmersible.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
120148
@Override
121149
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
122150
isImmersible = isChecked;
123151
titleBar.setImmersible(mContext, isImmersible, isLight);//一般情况下使用
152+
titleBarDrawer.setImmersible(mContext, isImmersible, isLight);
124153
sBtnImmersible.setText(isChecked ? "沉浸" : "不沉浸");
125-
if (isImmersible && type > 0) {
126-
initTitle();
127-
}
128154
if (!isImmersible) {
129155
sBtnLight.setChecked(false);
156+
sBarAlpha.setProgress(255);
157+
StatusBarUtil.StatusBarDarkMode(mContext);
158+
} else {
159+
if (isWhite) {
160+
StatusBarUtil.StatusBarLightMode(mContext);
161+
} else {
162+
StatusBarUtil.StatusBarDarkMode(mContext);
163+
}
130164
}
131165
}
132166
});
@@ -136,12 +170,22 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
136170
isLight = isChecked;
137171
if (isLight) {
138172
sBtnImmersible.setChecked(true);
173+
sBarAlpha.setProgress(0);
174+
} else {
175+
sBarAlpha.setProgress(102);
139176
}
140177
titleBar.setImmersible(mContext, isImmersible, isLight);//一般情况下使用
141-
sBtnLight.setText(isChecked ? "5.0以上全透明" : "5.0以上半透明");
142-
if (isImmersible && type > 0) {
143-
initTitle();
178+
titleBarDrawer.setImmersible(mContext, isImmersible, isLight);
179+
if (!isImmersible) {
180+
StatusBarUtil.StatusBarDarkMode(mContext);
181+
} else {
182+
if (isWhite) {
183+
StatusBarUtil.StatusBarLightMode(mContext);
184+
} else {
185+
StatusBarUtil.StatusBarDarkMode(mContext);
186+
}
144187
}
188+
sBtnLight.setText(isChecked ? "状态栏全透明" : "状态栏半透明");
145189
}
146190
});
147191
sBtnLine.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@@ -151,20 +195,47 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
151195
sBtnLine.setText(isChecked ? "显示下划线" : "隐藏下划线");
152196
}
153197
});
198+
sBarAlpha.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
199+
@Override
200+
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
201+
tvStatusAlpha.setText(progress + "");
202+
mAlpha = progress;
203+
sBtnImmersible.setChecked(mAlpha < 200);
204+
sBtnLight.setChecked(mAlpha == 0);
205+
titleBar.setStatusAlpha(mAlpha);
206+
if (mAlpha > 200 && isWhite) {
207+
StatusBarUtil.StatusBarDarkMode(mContext);
208+
} else {
209+
if (isWhite) {
210+
StatusBarUtil.StatusBarLightMode(mContext);
211+
}
212+
}
213+
}
214+
215+
@Override
216+
public void onStartTrackingTouch(SeekBar seekBar) {
217+
218+
}
219+
220+
@Override
221+
public void onStopTrackingTouch(SeekBar seekBar) {
222+
223+
}
224+
});
154225
drawerRoot.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {
155226
@Override
156227
public void onDrawerOpened(View drawerView) {
157228
super.onDrawerOpened(drawerView);
158-
if (type > 0 && isImmersible) {
159-
StatusBarUtil.StatusBarLightMode(mContext);
229+
if (type > 0) {
230+
StatusBarUtil.StatusBarDarkMode(mContext);
160231
}
161232
}
162233

163234
@Override
164235
public void onDrawerClosed(View drawerView) {
165236
super.onDrawerClosed(drawerView);
166-
if (type > 0 && isImmersible) {
167-
if (isWhite) {
237+
if (type > 0) {
238+
if (isWhite && isImmersible) {
168239
StatusBarUtil.StatusBarLightMode(mContext);
169240
} else {
170241
StatusBarUtil.StatusBarDarkMode(mContext);
@@ -174,6 +245,9 @@ public void onDrawerClosed(View drawerView) {
174245
});
175246
if (canLight && Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
176247
sBtnLight.setChecked(false);
248+
sBarAlpha.setProgress(StatusBarUtil.DEFAULT_STATUS_BAR_ALPHA);
249+
} else {
250+
sBarAlpha.setProgress(0);
177251
}
178252
}
179253

@@ -188,9 +262,6 @@ protected void onItemClicked(BaseQuickAdapter<TitleEntity, BaseViewHolder> adapt
188262
titleBar.setRightTextDrawable(isWhite ? R.drawable.ic_menu : R.drawable.ic_menu_white);
189263
titleBar.setTitleMainTextColor(isWhite ? getResources().getColor(R.color.colorTextBlack) : Color.WHITE);
190264
titleBar.setTitleSubTextColor(isWhite ? getResources().getColor(R.color.colorTextBlack) : Color.WHITE);
191-
if (isImmersible) {
192-
initTitle();
193-
}
194265
if (type > 0 && isImmersible) {
195266
if (isWhite) {
196267
StatusBarUtil.StatusBarLightMode(mContext);
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.aries.title.adapter;
2+
3+
import android.app.Activity;
4+
5+
import com.aries.title.R;
6+
import com.aries.title.entity.DrawerEntity;
7+
import com.chad.library.adapter.base.BaseQuickAdapter;
8+
import com.chad.library.adapter.base.BaseViewHolder;
9+
10+
import java.util.ArrayList;
11+
12+
/**
13+
* Created: AriesHoo on 2017/7/14 9:55
14+
* Function: Drawer 适配器
15+
* Desc:
16+
*/
17+
public class DrawerAdapter extends BaseQuickAdapter<DrawerEntity, BaseViewHolder> {
18+
private Activity mActivity;
19+
20+
public DrawerAdapter(Activity mActivity) {
21+
super(R.layout.item_widget, new ArrayList<DrawerEntity>());
22+
this.mActivity = mActivity;
23+
}
24+
25+
@Override
26+
protected void convert(BaseViewHolder helper, DrawerEntity item) {
27+
helper.setText(R.id.tv_titleWidget, item.title);
28+
helper.setText(R.id.tv_contentWidget, item.content);
29+
}
30+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.aries.title.entity;
2+
3+
/**
4+
* Created: AriesHoo on 2017/7/14 9:45
5+
* Function: 应用实体
6+
* Desc:
7+
*/
8+
public class DrawerEntity {
9+
10+
public String title;
11+
public String content;
12+
public String url;
13+
14+
public DrawerEntity(String title, String content, String url) {
15+
this.title = title;
16+
this.content = content;
17+
this.url = url;
18+
}
19+
}

app/src/main/java/com/aries/title/util/AppUtil.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ public static void jumpMarket(Context mContext, String packageName) {
3535
}
3636
}
3737

38+
public static void startBorwer(Context context, String url) {
39+
Intent intent = new Intent();
40+
intent.setAction("android.intent.action.VIEW");
41+
intent.setData(Uri.parse(url));
42+
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
43+
context.startActivity(intent);
44+
}
3845
/**
3946
* @param activity
4047
* @param bundle

0 commit comments

Comments
 (0)