1. 程式人生 > >android 仿餓了麽購物車

android 仿餓了麽購物車

dap boa dsa parent 能夠 chang 存儲 ood current

這次分享的是一個很常見的效果,凡是涉及到購物的app或者旅遊類以及訂餐類的app都有看到過這種效果,兩個list view聯動顯示,添加購物車時的一個拋物線動畫實現,以及圖標或者item右上角的數字顯示。下面是我空閑時候寫的一個demo,界面比較陋,但是基本效果都實現了。

不多說,看效果圖:

技術分享圖片技術分享圖片

只對添加按鈕做了監聽,刪除沒去寫(沒什麽必要)。

講一些主要的代碼,想下載源碼的可以去這裏下載(https://github.com/bobge/LinkedListView.git):

左邊的listview的item右上角的數字是通過xml方式來顯示的:

shape_data.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <shape
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:shape="oval"
  5. android:useLevel="false" >
  6. <solid android:color="#f00000" />
  7. <padding
  8. android:left
    ="2dp"
  9. android:top="1dp"
  10. android:right="2dp"
  11. android:bottom="1dp" />
  12. <solid
  13. android:color="#f00000" />
  14. <size android:width="15dp"
  15. android:height="15dp" />
  16. </shape>

想要實現圓形中間顯示數字只需要設置textview的寬高一樣就可以,然後設置textview的一個屬性為:
android:background="@drawable/shape_data"
購物車下面那個數字顯示我換了一種實現方式:調用BadgeView這個自定義類就能夠實現,用法很簡單,大家可以搜索一下這個類。

兩個listview的聯動也很簡單:

listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        list2.clear();
        list2.addAll(list.get(position).getList());
        goodsAdapter.notifyDataSetChanged();
    }
});

只要在左邊list view的監聽中給右邊list view的適配器notifyDataSetChanged就可以了。主要看看我的數據源格式應該就明白了。

拋物線動畫效果的實現,這部分網上有很多demo實現,其實原理很簡單,首先獲取點擊的那個位置的坐標:

int[] startLocation = new int[2];// 一個整型數組,用來存儲按鈕的在屏幕的X、Y坐標
v.getLocationInWindow(startLocation);// 這是獲取購買按鈕的在屏幕的X、Y坐標(這也是動畫開始的坐標)
通過同樣的方法計算結束位置(即購物車的位置坐標),然後計算x,y軸上的平移距離,用AnimationSet添加translateAnimationX和translateAnimationY就ok了,具體的可以去下載源碼看看。

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

android 仿餓了麽購物車