Skip to content

Commit 06a103a

Browse files
committed
DefaultHeader增加primayColor和accentColor属性
Signed-off-by: 2534290808 <2534290808@qq.com>
1 parent 86d2d24 commit 06a103a

File tree

4 files changed

+112
-13
lines changed

4 files changed

+112
-13
lines changed

.idea/workspace.xml

Lines changed: 49 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

DefaultHeader.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ class DefaultHeader extends Component {
2626
}
2727

2828
DefaultHeader.propTypes = {
29+
primaryColor:PropTypes.string,
30+
accentColor:PropTypes.string,
2931
...ViewPropTypes,
3032
}
3133
export default DefaultHeader;

android/src/main/java/com/lmy/header/DefaultHeader.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public class DefaultHeader extends LinearLayout implements RefreshHeader {
2929
private PathsView mArrowView;//下拉箭头
3030
private ImageView mProgressView;//刷新动画视图
3131
private ProgressDrawable mProgressDrawable;//刷新动画
32+
protected RefreshKernel mRefreshKernel;
33+
protected int mBackgroundColor;
34+
protected int mAccentColor;
35+
3236
public DefaultHeader(Context context) {
3337
super(context);
3438
this.initView(context);
@@ -45,7 +49,6 @@ public DefaultHeader(Context context, @Nullable AttributeSet attrs, int defStyle
4549
}
4650

4751

48-
4952
private void initView(Context context) {
5053
setGravity(Gravity.CENTER);
5154
mHeaderText = new TextView(context);
@@ -62,28 +65,33 @@ private void initView(Context context) {
6265
addView(mHeaderText, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
6366
setMinimumHeight(DensityUtil.dp2px(60));
6467
}
68+
6569
@NonNull
6670
public View getView() {
6771
return this;//真实的视图就是自己,不能返回null
6872
}
73+
6974
@Override
7075
public SpinnerStyle getSpinnerStyle() {
7176
return SpinnerStyle.Translate;//指定为平移,不能null
7277
}
78+
7379
@Override
7480
public void onStartAnimator(RefreshLayout layout, int headHeight, int extendHeight) {
7581
mProgressDrawable.start();//开始动画
7682
}
83+
7784
@Override
7885
public int onFinish(RefreshLayout layout, boolean success) {
7986
mProgressDrawable.stop();//停止动画
80-
if (success){
87+
if (success) {
8188
mHeaderText.setText("刷新完成");
8289
} else {
8390
mHeaderText.setText("刷新失败");
8491
}
8592
return 500;//延迟500毫秒之后再弹回
8693
}
94+
8795
@Override
8896
public void onStateChanged(RefreshLayout refreshLayout, RefreshState oldState, RefreshState newState) {
8997
switch (newState) {
@@ -105,19 +113,27 @@ public void onStateChanged(RefreshLayout refreshLayout, RefreshState oldState, R
105113
break;
106114
}
107115
}
116+
108117
@Override
109118
public boolean isSupportHorizontalDrag() {
110119
return false;
111120
}
121+
112122
@Override
113123
public void onInitialized(RefreshKernel kernel, int height, int extendHeight) {
124+
mRefreshKernel = kernel;
125+
mRefreshKernel.requestDrawBackgroundForHeader(mBackgroundColor);
126+
114127
}
128+
115129
@Override
116130
public void onHorizontalDrag(float percentX, int offsetX, int offsetMax) {
117131
}
132+
118133
@Override
119134
public void onPulling(float percent, int offset, int headHeight, int extendHeight) {
120135
}
136+
121137
@Override
122138
public void onReleasing(float percent, int offset, int headHeight, int extendHeight) {
123139
}
@@ -128,6 +144,26 @@ public void onReleased(RefreshLayout refreshLayout, int height, int extendHeight
128144
}
129145

130146
@Override
131-
public void setPrimaryColors(@ColorInt int ... colors){
147+
public void setPrimaryColors(@ColorInt int... colors) {
148+
}
149+
150+
public DefaultHeader setPrimaryColor(@ColorInt int primaryColor) {
151+
mBackgroundColor = primaryColor;
152+
if (mRefreshKernel != null) {
153+
mRefreshKernel.requestDrawBackgroundForHeader(primaryColor);
154+
}
155+
return this;
132156
}
157+
public DefaultHeader setAccentColor(int accentColor){
158+
mAccentColor=accentColor;
159+
if(mArrowView!=null){
160+
mArrowView.parserColors(accentColor);
161+
}
162+
if(mProgressDrawable!=null) {
163+
mProgressDrawable.setColor(accentColor);
164+
}
165+
mHeaderText.setTextColor(accentColor);
166+
return this;
167+
}
168+
133169
}

android/src/main/java/com/lmy/header/DefaultHeaderMananger.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.lmy.header;
22

3+
import android.graphics.Color;
4+
35
import com.facebook.react.uimanager.SimpleViewManager;
46
import com.facebook.react.uimanager.ThemedReactContext;
7+
import com.facebook.react.uimanager.annotations.ReactProp;
58

69
/**
710
* Created by painter.g on 2018/3/12.
@@ -17,4 +20,23 @@ public String getName() {
1720
protected DefaultHeader createViewInstance(ThemedReactContext reactContext) {
1821
return new DefaultHeader(reactContext);
1922
}
23+
/**
24+
* 设置主题颜色
25+
* @param view
26+
* @param primaryColor
27+
*/
28+
@ReactProp(name = "primaryColor")
29+
public void setPrimaryColor(DefaultHeader view,String primaryColor){
30+
view.setPrimaryColor(Color.parseColor(primaryColor));
31+
}
32+
33+
/**
34+
* 设置强调颜色
35+
* @param view
36+
* @param accentColor
37+
*/
38+
@ReactProp(name = "accentColor")
39+
public void setAccentColor(DefaultHeader view,String accentColor){
40+
view.setAccentColor(Color.parseColor(accentColor));
41+
}
2042
}

0 commit comments

Comments
 (0)