Skip to content

Commit 0871466

Browse files
authored
Merge pull request #55 from xuexiangjys/dev/1.1.2
Dev/1.1.2
2 parents bfdb3b6 + 0fdb4ed commit 0871466

File tree

129 files changed

+8774
-486
lines changed

Some content is hidden

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

129 files changed

+8774
-486
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ allprojects {
6363
dependencies {
6464
...
6565
//androidx项目
66-
implementation 'com.github.xuexiangjys:XUI:1.1.1'
66+
implementation 'com.github.xuexiangjys:XUI:1.1.2'
6767
6868
implementation 'androidx.appcompat:appcompat:1.1.0'
6969
implementation 'androidx.recyclerview:recyclerview:1.1.0'
@@ -217,6 +217,10 @@ C*y | 1¥ | 微信
217217
*钰晗 | 6¥ | 支付宝
218218
*娜 | 3¥ | 微信
219219
*米 | 20¥ | 微信
220+
*忘 | 10¥ | 微信
221+
*清红 | 1¥ | 支付宝
222+
*口 | 5¥ | 微信
223+
220224

221225
## 联系方式
222226

app/build.gradle

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ android {
1414
applicationId "com.xuexiang.xuidemo"
1515
minSdkVersion 17
1616
targetSdkVersion build_versions.target_sdk
17-
versionCode 12
18-
versionName "1.1.1"
17+
versionCode 13
18+
versionName "1.1.2"
1919

2020
multiDexEnabled true
2121
vectorDrawables.useSupportLibrary = true
@@ -102,8 +102,8 @@ dependencies {
102102
implementation 'com.github.bumptech.glide:glide:4.8.0'
103103

104104
//XUI框架
105-
// implementation project(':xui_lib')
106-
implementation 'com.github.xuexiangjys:XUI:1.1.1'
105+
implementation project(':xui_lib')
106+
// implementation 'com.github.xuexiangjys:XUI:1.1.1'
107107
// implementation 'com.qmuiteam:qmui:1.2.0'
108108

109109
//工具类
@@ -115,7 +115,7 @@ dependencies {
115115
implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.0.1'
116116
annotationProcessor 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.0.1'
117117
//XPage页面框架
118-
implementation 'com.github.xuexiangjys.XPage:xpage-lib:2.2.8'
118+
implementation 'com.github.xuexiangjys.XPage:xpage-lib:2.2.9'
119119
annotationProcessor project(':widget_compiler')
120120
//ButterKnife
121121
implementation deps.butterknife.runtime
@@ -159,6 +159,10 @@ dependencies {
159159
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'//选填
160160
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-filechooser:1.0.0'//选填
161161

162+
//数据库
163+
implementation 'com.github.xuexiangjys.XOrmlite:xormlite-runtime:1.0.1'
164+
annotationProcessor 'com.github.xuexiangjys.XOrmlite:xormlite-compiler:1.0.1'
165+
162166
//侧边栏菜单
163167
implementation 'com.yarolegovich:sliding-root-nav:1.1.0'
164168

app/src/main/java/com/xuexiang/xuidemo/DemoDataProvider.java

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ private static List<NineGridInfo> getMediaDemos(int length, int type) {
135135
NineGridInfo info;
136136
for (int i = 0; i < length; i++) {
137137
info = new NineGridInfo("我是一只喵,快乐的星猫~~~", getRandomMedias((int) (Math.random() * 10 + 0.5), type))
138-
.setShowType(NineGridImageView.STYLE_FILL);
138+
.setShowType(NineGridImageView.STYLE_FILL);
139139
list.add(info);
140140
}
141141
return list;
@@ -458,4 +458,59 @@ public static List<ElemeGroupedItem> getElemeGroupItems() {
458458
}.getType());
459459
}
460460

461+
/**
462+
* @return 省市区数据
463+
*/
464+
public static List<ProvinceInfo> getProvinceInfos() {
465+
return JsonUtil.fromJson(ResourceUtils.readStringFromAssert("province.json"), new TypeToken<List<ProvinceInfo>>() {
466+
}.getType());
467+
}
468+
469+
/**
470+
* 获取时间段
471+
*
472+
* @param interval 时间间隔(分钟)
473+
* @return
474+
*/
475+
public static String[] getTimePeriod(int interval) {
476+
return getTimePeriod(24, interval);
477+
}
478+
479+
/**
480+
* 获取时间段
481+
*
482+
* @param interval 时间间隔(分钟)
483+
* @return
484+
*/
485+
public static String[] getTimePeriod(int totalHour, int interval) {
486+
String[] time = new String[totalHour * 60 / interval];
487+
int point, hour, min;
488+
for (int i = 0; i < time.length; i++) {
489+
point = i * interval;
490+
hour = point / 60;
491+
min = point - hour * 60;
492+
time[i] = (hour < 9 ? "0" + hour : "" + hour) + ":" + (min < 9 ? "0" + min : "" + min);
493+
}
494+
return time;
495+
}
496+
497+
498+
/**
499+
* 获取时间段
500+
*
501+
* @param interval 时间间隔(分钟)
502+
* @return
503+
*/
504+
public static String[] getTimePeriod(int startHour, int totalHour, int interval) {
505+
String[] time = new String[totalHour * 60 / interval];
506+
int point, hour, min;
507+
for (int i = 0; i < time.length; i++) {
508+
point = i * interval + startHour * 60;
509+
hour = point / 60;
510+
min = point - hour * 60;
511+
time[i] = (hour < 9 ? "0" + hour : "" + hour) + ":" + (min < 9 ? "0" + min : "" + min);
512+
}
513+
return time;
514+
}
515+
461516
}

app/src/main/java/com/xuexiang/xuidemo/MyApp.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import com.google.android.cameraview.CameraView;
99
import com.luck.picture.lib.tools.PictureFileUtils;
1010
import com.mikepenz.iconics.Iconics;
11+
import com.xuexiang.xormlite.annotation.DataBase;
12+
import com.xuexiang.xormlite.enums.DataBaseType;
1113
import com.xuexiang.xui.XUI;
1214
import com.xuexiang.xuidemo.utils.sdkinit.AutoCameraStrategy;
1315
import com.xuexiang.xuidemo.utils.sdkinit.BuglyInit;
@@ -24,6 +26,7 @@
2426
* @author xuexiang
2527
* @since 2018/11/7 下午1:12
2628
*/
29+
@DataBase(name = "XUI", type = DataBaseType.INTERNAL)
2730
public class MyApp extends Application {
2831

2932
@Override

app/src/main/java/com/xuexiang/xuidemo/adapter/NewsListAdapter.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.xuexiang.xuidemo.adapter;
22

3-
import com.scwang.smartrefresh.layout.adapter.SmartViewHolder;
3+
import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder;
44
import com.xuexiang.xui.widget.imageview.ImageLoader;
55
import com.xuexiang.xui.widget.imageview.RadiusImageView;
66
import com.xuexiang.xuidemo.DemoDataProvider;
@@ -22,10 +22,16 @@ public class NewsListAdapter extends BroccoliRecyclerAdapter<NewInfo> {
2222
private boolean mIsAnim;
2323

2424
public NewsListAdapter(boolean isAnim) {
25-
super(DemoDataProvider.getEmptyNewInfo(), R.layout.adapter_news_list_item);
25+
super(DemoDataProvider.getEmptyNewInfo());
2626
mIsAnim = isAnim;
2727
}
2828

29+
30+
@Override
31+
protected int getItemLayoutId(int viewType) {
32+
return R.layout.adapter_news_list_item;
33+
}
34+
2935
/**
3036
* 绑定控件
3137
*
@@ -34,7 +40,7 @@ public NewsListAdapter(boolean isAnim) {
3440
* @param position
3541
*/
3642
@Override
37-
protected void onBindData(SmartViewHolder holder, NewInfo model, int position) {
43+
protected void onBindData(RecyclerViewHolder holder, NewInfo model, int position) {
3844
holder.text(R.id.tv_user_name, model.getUserName());
3945
holder.text(R.id.tv_tag, model.getTag());
4046
holder.text(R.id.tv_title, model.getTitle());
@@ -54,7 +60,7 @@ protected void onBindData(SmartViewHolder holder, NewInfo model, int position) {
5460
* @param broccoli
5561
*/
5662
@Override
57-
protected void onBindBroccoli(SmartViewHolder holder, Broccoli broccoli) {
63+
protected void onBindBroccoli(RecyclerViewHolder holder, Broccoli broccoli) {
5864
if (mIsAnim) {
5965
broccoli.addPlaceholder(PlaceholderHelper.getParameter(holder.findView(R.id.iv_avatar)))
6066
.addPlaceholder(PlaceholderHelper.getParameter(holder.findView(R.id.tv_user_name)))

app/src/main/java/com/xuexiang/xuidemo/adapter/PreviewRecycleAdapter.java

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
package com.xuexiang.xuidemo.adapter;
1818

19+
import androidx.annotation.NonNull;
20+
1921
import com.bumptech.glide.Glide;
20-
import com.scwang.smartrefresh.layout.adapter.SmartRecyclerAdapter;
21-
import com.scwang.smartrefresh.layout.adapter.SmartViewHolder;
22+
import com.xuexiang.xui.adapter.recyclerview.BaseRecyclerAdapter;
23+
import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder;
2224
import com.xuexiang.xui.widget.imageview.IconImageView;
2325
import com.xuexiang.xui.widget.imageview.preview.loader.GlideMediaLoader;
2426
import com.xuexiang.xuidemo.R;
@@ -30,32 +32,26 @@
3032
* @author xuexiang
3133
* @since 2018/12/7 下午5:40
3234
*/
33-
public class PreviewRecycleAdapter extends SmartRecyclerAdapter<ImageViewInfo> {
35+
public class PreviewRecycleAdapter extends BaseRecyclerAdapter<ImageViewInfo> {
3436

35-
public PreviewRecycleAdapter() {
36-
super(R.layout.adapter_item_image_preview);
37+
@Override
38+
protected int getItemLayoutId(int viewType) {
39+
return R.layout.adapter_item_image_preview;
3740
}
3841

39-
/**
40-
* 绑定布局控件
41-
*
42-
* @param holder
43-
* @param model
44-
* @param position
45-
*/
4642
@Override
47-
protected void onBindViewHolder(SmartViewHolder holder, ImageViewInfo model, int position) {
48-
if (model != null) {
43+
protected void bindData(@NonNull RecyclerViewHolder holder, int position, ImageViewInfo item) {
44+
if (item != null) {
4945
IconImageView imageView = holder.findViewById(R.id.iv);
5046

51-
imageView.setIsShowIcon(model.getVideoUrl() != null);
47+
imageView.setIsShowIcon(item.getVideoUrl() != null);
5248

5349
Glide.with(imageView.getContext())
54-
.load(model.getUrl())
50+
.load(item.getUrl())
5551
.apply(GlideMediaLoader.getRequestOptions())
5652
.into(imageView);
5753

58-
imageView.setTag(R.id.iv, model.getUrl());
54+
imageView.setTag(R.id.iv, item.getUrl());
5955
}
6056
}
6157
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright (C) 2019 xuexiangjys(xuexiangjys@163.com)
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package com.xuexiang.xuidemo.adapter;
19+
20+
import androidx.annotation.NonNull;
21+
22+
import com.xuexiang.xui.adapter.recyclerview.BaseRecyclerAdapter;
23+
import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder;
24+
import com.xuexiang.xuidemo.R;
25+
import com.xuexiang.xuidemo.base.db.entity.SearchRecord;
26+
27+
/**
28+
* @author xuexiang
29+
* @since 2019-12-04 23:21
30+
*/
31+
public class SearchRecordTagAdapter extends BaseRecyclerAdapter<SearchRecord> {
32+
33+
@Override
34+
protected int getItemLayoutId(int viewType) {
35+
return R.layout.adapter_search_record_tag_item;
36+
}
37+
38+
@Override
39+
protected void bindData(@NonNull RecyclerViewHolder holder, int position, SearchRecord item) {
40+
if (item != null) {
41+
holder.text(R.id.tv_tag, item.getContent());
42+
}
43+
}
44+
}

app/src/main/java/com/xuexiang/xuidemo/adapter/base/BroccoliRecyclerAdapter.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.xuexiang.xuidemo.adapter.base;
22

3-
import androidx.annotation.LayoutRes;
43
import android.view.View;
54

6-
import com.scwang.smartrefresh.layout.adapter.SmartRecyclerAdapter;
7-
import com.scwang.smartrefresh.layout.adapter.SmartViewHolder;
5+
import androidx.annotation.NonNull;
6+
7+
import com.xuexiang.xui.adapter.recyclerview.BaseRecyclerAdapter;
8+
import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder;
9+
import com.xuexiang.xui.adapter.recyclerview.XRecyclerAdapter;
810

911
import java.util.Collection;
1012
import java.util.HashMap;
@@ -18,26 +20,21 @@
1820
* @author XUE
1921
* @since 2019/4/8 16:33
2022
*/
21-
public abstract class BroccoliRecyclerAdapter<T> extends SmartRecyclerAdapter<T> {
23+
public abstract class BroccoliRecyclerAdapter<T> extends BaseRecyclerAdapter<T> {
2224
/**
2325
* 是否已经加载成功
2426
*/
2527
private boolean mHasLoad = false;
2628
private Map<View, Broccoli> mBroccoliMap = new HashMap<>();
2729

28-
public BroccoliRecyclerAdapter(Collection<T> collection, @LayoutRes int layoutId) {
29-
super(collection, layoutId);
30+
public BroccoliRecyclerAdapter(Collection<T> collection) {
31+
super(collection);
3032
}
3133

32-
/**
33-
* 绑定布局控件
34-
*
35-
* @param holder
36-
* @param model
37-
* @param position
38-
*/
34+
35+
3936
@Override
40-
protected void onBindViewHolder(SmartViewHolder holder, T model, int position) {
37+
protected void bindData(@NonNull RecyclerViewHolder holder, int position, T item) {
4138
Broccoli broccoli = mBroccoliMap.get(holder.itemView);
4239
if (broccoli == null) {
4340
broccoli = new Broccoli();
@@ -46,7 +43,7 @@ protected void onBindViewHolder(SmartViewHolder holder, T model, int position) {
4643
if (mHasLoad) {
4744
broccoli.removeAllPlaceholders();
4845

49-
onBindData(holder, model, position);
46+
onBindData(holder, item, position);
5047
} else {
5148
onBindBroccoli(holder, broccoli);
5249
broccoli.show();
@@ -60,17 +57,17 @@ protected void onBindViewHolder(SmartViewHolder holder, T model, int position) {
6057
* @param model
6158
* @param position
6259
*/
63-
protected abstract void onBindData(SmartViewHolder holder, T model, int position);
60+
protected abstract void onBindData(RecyclerViewHolder holder, T model, int position);
6461

6562
/**
6663
* 绑定占位控件
6764
*
6865
* @param broccoli
6966
*/
70-
protected abstract void onBindBroccoli(SmartViewHolder holder, Broccoli broccoli);
67+
protected abstract void onBindBroccoli(RecyclerViewHolder holder, Broccoli broccoli);
7168

7269
@Override
73-
public SmartRecyclerAdapter<T> refresh(Collection<T> collection) {
70+
public XRecyclerAdapter refresh(Collection<T> collection) {
7471
mHasLoad = true;
7572
return super.refresh(collection);
7673
}

app/src/main/java/com/xuexiang/xuidemo/base/BaseHomeFragment.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.xuexiang.xuidemo.activity.MainActivity;
3333
import com.xuexiang.xuidemo.adapter.WidgetItemAdapter;
3434
import com.xuexiang.xuidemo.fragment.AboutFragment;
35+
import com.xuexiang.xuidemo.fragment.SearchComponentFragment;
3536

3637
import java.util.Collections;
3738
import java.util.Comparator;
@@ -63,6 +64,17 @@ public void onClick(View v) {
6364
getContainer().openMenu();
6465
}
6566
});
67+
titleBar.addAction(new TitleBar.ImageAction(R.drawable.icon_action_query) {
68+
@Override
69+
@SingleClick
70+
public void performAction(View view) {
71+
openNewPage(SearchComponentFragment.class);
72+
}
73+
@Override
74+
public int rightPadding() {
75+
return DensityUtils.dp2px(10);
76+
}
77+
});
6678
titleBar.addAction(new TitleBar.ImageAction(R.drawable.icon_action_about) {
6779
@Override
6880
@SingleClick

0 commit comments

Comments
 (0)