Skip to content

Commit 5a09475

Browse files
committed
move attr "CardHeight" & "CardMinSpan" to xml
1 parent 8495ccc commit 5a09475

File tree

7 files changed

+24
-30
lines changed

7 files changed

+24
-30
lines changed

cardstackview/src/main/java/me/brucezz/cardstackview/CardAdapter.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,6 @@ public abstract class CardAdapter {
2222
*/
2323
public abstract int getItemCount();
2424

25-
/**
26-
* 获取每一个 View 的高度
27-
*/
28-
public abstract int getCardHeight();
29-
30-
/**
31-
* View 最小间隔
32-
*/
33-
public abstract int getMinCardSpan();
34-
3525
/**
3626
* 获取卡片的排序位置
3727
* 如 原始第 1 张卡片,现在要摆放在第 3 的位置

cardstackview/src/main/java/me/brucezz/cardstackview/CardStackView.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.animation.ValueAnimator;
44
import android.content.Context;
5+
import android.content.res.TypedArray;
56
import android.database.DataSetObserver;
67
import android.support.v4.view.GestureDetectorCompat;
78
import android.support.v4.widget.ViewDragHelper;
@@ -42,6 +43,8 @@ public class CardStackView extends ViewGroup {
4243

4344
private boolean mSkipLayout = false;
4445
private boolean mSkipTouch = false;
46+
private int mCardHeight;
47+
private int mCardMinSpan;
4548

4649
public void setSkipLayout(boolean skipLayout) {
4750
mSkipLayout = skipLayout;
@@ -62,6 +65,11 @@ public CardStackView(Context context, AttributeSet attrs) {
6265
public CardStackView(Context context, AttributeSet attrs, int defStyleAttr) {
6366
super(context, attrs, defStyleAttr);
6467

68+
TypedArray ta = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.CardStackView, defStyleAttr, 0);
69+
mCardHeight = ta.getDimensionPixelSize(R.styleable.CardStackView_card_height, Util.dp2px(getContext(), 160));
70+
mCardMinSpan = ta.getDimensionPixelSize(R.styleable.CardStackView_card_min_span, Util.dp2px(getContext(), 40));
71+
ta.recycle();
72+
6573
initTouchCallback();
6674

6775
setChildrenDrawingOrderEnabled(true);
@@ -195,11 +203,10 @@ private void updateOptions() {
195203
int parentH = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
196204
int parentW = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
197205

198-
// TODO: 2016/10/31 后面提供相关属性,不通过 adapter 提供
199-
mOptions.CARD_HEIGHT = mCardAdapter.getCardHeight();
206+
mOptions.CARD_HEIGHT = mCardHeight;
200207
mOptions.CARD_WIDTH = parentW;
201208

202-
mOptions.CARD_SPAN_NORMAL_MIN = mCardAdapter.getMinCardSpan();
209+
mOptions.CARD_SPAN_NORMAL_MIN = mCardMinSpan;
203210
int span = (parentH - mOptions.CARD_HEIGHT) / (mCardAdapter.getItemCount() - 1);
204211
mOptions.CARD_SPAN_NORMAL = Math.max(span, mOptions.CARD_SPAN_NORMAL_MIN);
205212

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package me.brucezz.cardstackview;
22

33
import android.content.Context;
4+
import android.util.TypedValue;
45

56
/**
67
* Created by brucezz on 2016-09-26.
@@ -10,10 +11,7 @@
1011

1112
public class Util {
1213

13-
/**
14-
* 获取屏幕宽度
15-
*/
16-
public static int getScreenWidthPixel(Context context) {
17-
return context.getResources().getDisplayMetrics().widthPixels;
14+
public static int dp2px(Context context, float dpValue) {
15+
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics());
1816
}
1917
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<declare-styleable name="CardStackView">
4+
<attr format="dimension" name="card_height"/>
5+
<attr format="dimension" name="card_min_span"/>
6+
</declare-styleable>
7+
</resources>

sample/src/main/java/me/brucezz/sample/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public AnimationHelper(View view, int index) {
153153
startRadius = mCardView.getRadius();
154154
endRadius = 1f;// radius 减到 0 会自动产生透明度变化
155155

156-
startColor = getResources().getColor(R.color.colorPrimaryDark);
156+
startColor = getResources().getColor(R.color.colorPrimary);
157157
endColor = mCards.get(mIndex).second.mBgColor;
158158

159159
startElevation = mCardView.getMaxCardElevation();

sample/src/main/java/me/brucezz/sample/SimpleCardAdapter.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,6 @@ public int getItemCount() {
6161
return mCards != null ? mCards.size() : 0;
6262
}
6363

64-
@Override
65-
public int getCardHeight() {
66-
return mContext.getResources().getDimensionPixelSize(R.dimen.card_height);
67-
}
68-
69-
@Override
70-
public int getMinCardSpan() {
71-
return mContext.getResources().getDimensionPixelSize(R.dimen.card_span_min);
72-
}
73-
7464
@Override
7565
public int getOrder(int position) {
7666
return mCards.get(position).first;

sample/src/main/res/layout/activity_main.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
android:paddingBottom="@dimen/card_height"
1515
android:paddingLeft="8dp"
1616
android:paddingRight="8dp"
17-
android:paddingTop="64dp"/>
17+
android:paddingTop="64dp"
18+
app:card_height="@dimen/card_height"
19+
app:card_min_span="@dimen/card_span_min"/>
1820

1921
<android.support.v7.widget.Toolbar
2022
android:id="@+id/toolbar"

0 commit comments

Comments
 (0)