Skip to content

Commit 67bd11d

Browse files
authored
Merge pull request #77 from xuexiangjys/dev/1.1.5
Dev/1.1.5
2 parents 8192087 + 38335f8 commit 67bd11d

File tree

195 files changed

+3074
-1451
lines changed

Some content is hidden

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

195 files changed

+3074
-1451
lines changed

app/build.gradle

Lines changed: 10 additions & 10 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 15
18-
versionName "1.1.4"
17+
versionCode 16
18+
versionName "1.1.5"
1919

2020
multiDexEnabled true
2121
vectorDrawables.useSupportLibrary = true
@@ -90,21 +90,21 @@ android {
9090
dependencies {
9191
implementation fileTree(include: ['*.jar'], dir: 'libs')
9292
implementation deps.androidx.multidex
93-
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
93+
implementation 'androidx.constraintlayout:constraintlayout:2.0.0'
9494

9595
//下拉刷新、CityPicker、XUI框架需要
9696
// implementation deps.androidx.appcompat
9797
// implementation deps.androidx.recyclerview
9898
// implementation deps.androidx.design
9999
// implementation deps.glide
100-
implementation 'androidx.appcompat:appcompat:1.1.0'
100+
implementation 'androidx.appcompat:appcompat:1.2.0'
101101
implementation 'androidx.recyclerview:recyclerview:1.1.0'
102-
implementation 'com.google.android.material:material:1.1.0'
102+
implementation 'com.google.android.material:material:1.2.0'
103103
implementation 'com.github.bumptech.glide:glide:4.11.0'
104104

105105
//XUI框架
106-
// implementation project(':xui_lib')
107-
implementation 'com.github.xuexiangjys:XUI:1.1.4'
106+
implementation project(':xui_lib')
107+
// implementation 'com.github.xuexiangjys:XUI:1.1.4'
108108
// implementation 'com.qmuiteam:qmui:1.2.0'
109109

110110
//工具类
@@ -116,7 +116,7 @@ dependencies {
116116
implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.0.1'
117117
annotationProcessor 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.0.1'
118118
//XPage页面框架
119-
implementation 'com.github.xuexiangjys.XPage:xpage-lib:2.3.0'
119+
implementation 'com.github.xuexiangjys.XPage:xpage-lib:3.0.0'
120120
annotationProcessor project(':widget_compiler')
121121
//ButterKnife
122122
implementation deps.butterknife.runtime
@@ -128,7 +128,7 @@ dependencies {
128128

129129
//弹性布局
130130
implementation 'com.google.android:flexbox:0.3.1'
131-
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
131+
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
132132
//悬浮按钮
133133
implementation 'com.github.clans:fab:1.6.4'
134134
//RxUtil2
@@ -199,7 +199,7 @@ dependencies {
199199
implementation 'com.alibaba.android:ultraviewpager:1.0.7.8'
200200
implementation 'com.alibaba.android:tangram:3.3.6'
201201
//版本更新
202-
implementation 'com.github.xuexiangjys:XUpdate:1.1.6'
202+
implementation 'com.github.xuexiangjys:XUpdate:2.0.2'
203203
implementation 'com.zhy:okhttputils:2.6.2'
204204
//腾讯的键值对存储mmkv
205205
implementation 'com.tencent:mmkv:1.0.22'

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<application
3030
android:name=".MyApp"
3131
android:allowBackup="false"
32-
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
32+
android:configChanges="screenSize|keyboardHidden|orientation|keyboard|locale|layoutDirection"
3333
android:icon="@mipmap/ic_launcher"
3434
android:label="@string/app_name"
3535
android:networkSecurityConfig="@xml/network_security_config"
@@ -59,12 +59,12 @@
5959

6060
<activity
6161
android:name=".activity.MainActivity"
62-
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
62+
android:configChanges="screenSize|keyboardHidden|orientation|keyboard|locale|layoutDirection"
6363
android:launchMode="singleTask"
6464
android:windowSoftInputMode="adjustPan|stateHidden" />
6565
<activity
6666
android:name=".activity.LoginActivity"
67-
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
67+
android:configChanges="screenSize|keyboardHidden|orientation|keyboard|locale|layoutDirection"
6868
android:launchMode="singleInstance"
6969
android:screenOrientation="portrait"
7070
android:windowSoftInputMode="adjustPan|stateHidden" />
@@ -141,7 +141,7 @@
141141
<!--fragment的页面容器-->
142142
<activity
143143
android:name=".base.BaseActivity"
144-
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
144+
android:configChanges="screenSize|keyboardHidden|orientation|keyboard|locale|layoutDirection"
145145
android:windowSoftInputMode="adjustPan|stateHidden" />
146146
<activity
147147
android:name=".widget.iconfont.IconFontActivity"

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private void initUI() {
6464
XUI.debug(MyApp.isDebug());
6565
if (SettingSPUtils.getInstance().isUseCustomFont()) {
6666
//设置默认字体为华文行楷
67-
XUI.getInstance().initFontStyle("fonts/hwxk.ttf");
67+
XUI.initFontStyle("fonts/hwxk.ttf");
6868
}
6969
PictureFileUtils.setAppName("xui");
7070

@@ -82,5 +82,4 @@ public static boolean isDebug() {
8282
}
8383

8484

85-
8685
}

app/src/main/java/com/xuexiang/xuidemo/activity/MainActivity.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.xuexiang.xuidemo.activity;
22

3+
import android.content.res.Configuration;
34
import android.graphics.drawable.Drawable;
45
import android.os.Bundle;
56
import android.util.TypedValue;
67
import android.view.KeyEvent;
78
import android.widget.LinearLayout;
89

10+
import androidx.annotation.NonNull;
911
import androidx.appcompat.widget.AppCompatImageView;
1012
import androidx.recyclerview.widget.LinearLayoutManager;
1113
import androidx.recyclerview.widget.RecyclerView;
@@ -36,6 +38,7 @@
3638
import com.xuexiang.xuidemo.utils.XToastUtils;
3739
import com.xuexiang.xutil.common.ClickUtils;
3840
import com.xuexiang.xutil.system.DeviceUtils;
41+
import com.yarolegovich.slidingrootnav.SlideGravity;
3942
import com.yarolegovich.slidingrootnav.SlidingRootNav;
4043
import com.yarolegovich.slidingrootnav.SlidingRootNavBuilder;
4144
import com.yarolegovich.slidingrootnav.callback.DragStateListener;
@@ -77,11 +80,18 @@ protected void onCreate(Bundle savedInstanceState) {
7780
//登记一下
7881
MobclickAgent.onProfileSignIn(DeviceUtils.getAndroidID());
7982

83+
initData();
84+
8085
initSlidingMenu(savedInstanceState);
8186

8287
initViews();
8388
}
8489

90+
private void initData() {
91+
mMenuTitles = ResUtils.getStringArray(R.array.menu_titles);
92+
mMenuIcons = ResUtils.getDrawableArray(this, R.array.menu_icons);
93+
}
94+
8595
@Override
8696
protected boolean isSupportSlideBack() {
8797
return false;
@@ -147,6 +157,12 @@ public void onTabReselected(TabLayout.Tab tab) {
147157
});
148158
}
149159

160+
@Override
161+
public void onConfigurationChanged(@NonNull Configuration newConfig) {
162+
super.onConfigurationChanged(newConfig);
163+
164+
initSlidingMenu(null);
165+
}
150166

151167
public void openMenu() {
152168
if (mSlidingRootNav != null) {
@@ -168,10 +184,8 @@ public boolean isMenuOpen() {
168184
}
169185

170186
private void initSlidingMenu(Bundle savedInstanceState) {
171-
mMenuTitles = ResUtils.getStringArray(R.array.menu_titles);
172-
mMenuIcons = ResUtils.getDrawableArray(this, R.array.menu_icons);
173-
174187
mSlidingRootNav = new SlidingRootNavBuilder(this)
188+
.withGravity(ResUtils.isRtl() ? SlideGravity.RIGHT : SlideGravity.LEFT)
175189
.withMenuOpened(false)
176190
.withContentClickableWhenMenuOpened(false)
177191
.withSavedState(savedInstanceState)

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

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

3+
import android.os.Bundle;
4+
35
import androidx.annotation.NonNull;
46

57
import com.xuexiang.xui.adapter.recyclerview.BaseRecyclerAdapter;
68
import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder;
9+
import com.xuexiang.xui.utils.WidgetUtils;
710
import com.xuexiang.xuidemo.R;
811
import com.xuexiang.xuidemo.adapter.entity.NewInfo;
12+
import com.xuexiang.xuidemo.fragment.components.refresh.diffutil.DiffUtilCallback;
13+
import com.xuexiang.xutil.common.CollectionUtils;
14+
import com.xuexiang.xutil.common.logger.Logger;
15+
16+
import java.util.List;
917

1018
/**
1119
* @author XUE
@@ -32,4 +40,43 @@ public void bindData(@NonNull RecyclerViewHolder holder, int position, NewInfo m
3240
}
3341
}
3442

43+
44+
@Override
45+
public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position, @NonNull List<Object> payloads) {
46+
if (CollectionUtils.isEmpty(payloads)) {
47+
Logger.e("正在进行全量刷新:" + position);
48+
onBindViewHolder(holder, position);
49+
return;
50+
}
51+
// payloads为非空的情况,进行局部刷新
52+
53+
//取出我们在getChangePayload()方法返回的bundle
54+
Bundle payload = WidgetUtils.getChangePayload(payloads);
55+
if (payload == null) {
56+
return;
57+
}
58+
59+
Logger.e("正在进行增量刷新:" + position);
60+
NewInfo newInfo = getItem(position);
61+
for (String key : payload.keySet()) {
62+
switch (key) {
63+
case DiffUtilCallback.PAYLOAD_USER_NAME:
64+
//这里可以用payload里的数据,不过newInfo也是新的 也可以用
65+
holder.text(R.id.tv_user_name, newInfo.getUserName());
66+
break;
67+
case DiffUtilCallback.PAYLOAD_PRAISE:
68+
holder.text(R.id.tv_praise, payload.getInt(DiffUtilCallback.PAYLOAD_PRAISE) == 0 ? "点赞" : String.valueOf(payload.getInt(DiffUtilCallback.PAYLOAD_PRAISE)));
69+
break;
70+
case DiffUtilCallback.PAYLOAD_COMMENT:
71+
holder.text(R.id.tv_comment, payload.getInt(DiffUtilCallback.PAYLOAD_COMMENT) == 0 ? "评论" : String.valueOf(payload.getInt(DiffUtilCallback.PAYLOAD_COMMENT)));
72+
break;
73+
case DiffUtilCallback.PAYLOAD_READ_NUMBER:
74+
holder.text(R.id.tv_read, "阅读量 " + payload.getInt(DiffUtilCallback.PAYLOAD_READ_NUMBER));
75+
break;
76+
default:
77+
break;
78+
}
79+
}
80+
}
81+
3582
}

app/src/main/java/com/xuexiang/xuidemo/adapter/dropdownmenu/CityDropDownAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ protected void convert(ViewHolder holder, String item, int position) {
5555
if (mSelectPosition != -1) {
5656
if (mSelectPosition == position) {
5757
holder.mText.setSelected(true);
58-
holder.mText.setCompoundDrawablesWithIntrinsicBounds(null, null, ResUtils.getVectorDrawable(holder.mText.getContext(), R.drawable.ic_checked_right), null);
58+
holder.mText.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, ResUtils.getVectorDrawable(holder.mText.getContext(), R.drawable.ic_checked_right), null);
5959
} else {
6060
holder.mText.setSelected(false);
61-
holder.mText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
61+
holder.mText.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, null);
6262
}
6363
}
6464
}

app/src/main/java/com/xuexiang/xuidemo/adapter/entity/NewInfo.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@
22

33
import androidx.annotation.NonNull;
44

5+
import java.util.concurrent.atomic.AtomicLong;
6+
57
/**
68
* 新闻信息
79
*
810
* @author xuexiang
911
* @since 2019/4/7 下午12:07
1012
*/
11-
public class NewInfo {
13+
public class NewInfo implements Cloneable {
14+
15+
private static AtomicLong sAtomicLong = new AtomicLong();
1216

17+
18+
private long ID;
1319
/**
1420
* 用户名
1521
*/
@@ -76,6 +82,7 @@ public NewInfo(String tag, String title, String summary, String imageUrl, String
7682

7783

7884
public NewInfo(String tag, String title) {
85+
ID = sAtomicLong.incrementAndGet();
7986
Tag = tag;
8087
Title = title;
8188

@@ -84,7 +91,21 @@ public NewInfo(String tag, String title) {
8491
Read = (int) (Math.random() * 500 + 50);
8592
}
8693

94+
public NewInfo resetContent() {
95+
Praise = (int) (Math.random() * 100 + 5);
96+
Comment = (int) (Math.random() * 50 + 5);
97+
Read = (int) (Math.random() * 500 + 50);
98+
return this;
99+
}
100+
101+
public NewInfo setID(long ID) {
102+
this.ID = ID;
103+
return this;
104+
}
87105

106+
public long getID() {
107+
return ID;
108+
}
88109

89110
public String getUserName() {
90111
return UserName;
@@ -182,4 +203,15 @@ public String toString() {
182203
", DetailUrl='" + DetailUrl + '\'' +
183204
'}';
184205
}
206+
207+
@NonNull
208+
@Override
209+
public NewInfo clone() {
210+
try {
211+
return (NewInfo) super.clone();
212+
} catch (CloneNotSupportedException e) {
213+
e.printStackTrace();
214+
}
215+
return new NewInfo();
216+
}
185217
}

0 commit comments

Comments
 (0)