天天看點

仿大街網-堆棧式卡片布局-SwipeCardLayout

前幾天,發現大街網的App 做的還不錯,有一個卡片堆疊的效果,感覺nice,按照以前的習慣,一定是在github上搜尋一下下,問題解決了,自己不滿意,老闆很滿意,哈哈。鑒于之前一直沒有時間自己嘗試寫控件,無奈這幾天公司不給我派活了。好吧自己嘗試一下,剛看到這個效果事,無從下手,後來發現,一點點規律,不知道對不對,效果算是實作了

<pre>

import github.alex.swipecardlayout.SwipeCardLayout;

public class MainActivity extends AppCompatActivity {

private SwipeCardLayout swipeCardLayout;

private Context context;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

context = this;

initView();

}

@TargetApi(Build.VERSION_CODES.HONEYCOMB)

private void initView() {

findViewById(R.id.bt_reload).setOnClickListener(new MyOnClickListener());

swipeCardLayout = (SwipeCardLayout) findViewById(R.id.scl);

swipeCardLayout.setCardView(16, 5, R.layout.card_user_info, 32);

swipeCardLayout.setSwipeDistance(96);

swipeCardLayout.setOnSwipeCardListener(new MyOnSwipeCardListener());

View lastView = swipeCardLayout.getLastView();

TextView textView = (TextView) lastView.findViewById(R.id.tv_info);

textView.setText("剩餘卡片數量 = " + 16 + " 卡片總數 = " + 16 + " 堆棧的長度 = " + 5);

private final class MyOnSwipeCardListener implements SwipeCardLayout.OnSwipeCardListener {

public void onSwipeFinish(int cardBalanceCount, int cardCount, int stackLength) {

// KLog.e("currIndex = "+currIndex);

if (lastView != null) {

textView.setText("剩餘卡片數量 = " + cardBalanceCount + " 卡片總數 = " + cardCount + " 堆棧的長度 = " + stackLength);

if (cardBalanceCount > 0) {

} else if (cardBalanceCount == 0) {

findViewById(R.id.bt_reload).setVisibility(View.VISIBLE);

findViewById(R.id.iv_foot_left).setSelected(false);

findViewById(R.id.iv_foot_right).setSelected(false);

public void onSwiping(int swipeStatus, int cardBalanceCount, int cardCount, int stackLength) {

View preLastView = swipeCardLayout.getPreLastView();

if (preLastView != null) {

TextView textView = (TextView) preLastView.findViewById(R.id.tv_info);

textView.setText("剩餘卡片數量 = " + (cardBalanceCount-1) + " 卡片總數 = " + cardCount + " 堆棧的長度 = " + stackLength);

if (swipeStatus == -1) {

findViewById(R.id.iv_foot_left).setSelected(true);

} else if (swipeStatus == 0) {

} else if (swipeStatus == 1) {

findViewById(R.id.iv_foot_right).setSelected(true);

private final class MyOnClickListener implements View.OnClickListener {

public void onClick(View v) {

if (R.id.bt_reload == v.getId()) {

swipeCardLayout.setCardView(14, 5, R.layout.card_user_info, 32);

textView.setText("剩餘卡片數量 = " + 14 + " 卡片總數 = " + 14 + " 目前卡片在堆棧中的編号 = " + 5 + " 堆棧的長度 = " + 5);

findViewById(R.id.bt_reload).setVisibility(View.GONE);

</pre>

github位址

<a href="https://github.com/Alex-Cin/SwipeCardLayout">https://github.com/Alex-Cin/SwipeCardLayout</a>

apk檔案

<a href="http://fir.im/apps/57068daff2fc425a6100000f">http://fir.im/apps/57068daff2fc425a6100000f</a>

SwipeCardLayout.gif

Paste_Image.png

繼續閱讀