2015-03-25 25 views
2

剛剛遇到這個應用程序RetailMeNot Coupons。使用的列表視圖是自定義的,看起來很酷。最初,該列表顯示較小的子項目圖像。隨着用戶向上滾動,子項目完全展開以顯示更大的圖像。Android:像RetailMeNot應用程序的ListView

出於好奇,我打算在測試應用程序中構建一個類似的列表視圖。 我確定這是一個自定義列表視圖,有沒有人看過類似列表視圖的庫或實現?

List Position 1

List Position 2

List Position 3

+0

可能這是一個混合的應用程序。 – Apurva 2015-03-25 07:34:16

+0

它不是Hybrid應用程序它的anroid的本地應用程序@Apurva – 2015-05-23 05:32:54

+0

@Faheem你實現了這個嗎? – 2015-05-23 05:33:32

回答

-1

我試過直接使用listviewscroll。

是不完美的,但是是一個開始

public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    getListView().setOnScrollListener(new AbsListView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 

     } 

     @Override 
     public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      for (int j=0; j<visibleItemCount; j++) { 
       if(absListView.getChildAt(j).getClass() == FrameLayout.class) { 
        FrameLayout item = (FrameLayout) absListView.getChildAt(j); 
        String result = ""; 
        if (item != null) { 
         RelativeLayout relative1 = (RelativeLayout) item.getChildAt(0); 
         ImageView promoImage = (ImageView) relative1.getChildAt(0); 
         View promoOverlay = (View) relative1.getChildAt(1); 
         RelativeLayout relative2 = (RelativeLayout) relative1.getChildAt(2); 
         ImageView brandImage = (ImageView) relative2.getChildAt(0); 
         TextView promoText = (TextView) relative2.getChildAt(1); 
         item.setLayoutParams(new AbsListView.LayoutParams(item.getWidth(), (int) minHeight)); 
         if (item.getTop() < maxHeight) { 
          if (item.getTop() >= 0) { 
           float topPercent = item.getTop()/maxHeight; 
           float newHeight = minHeight + ((maxHeight - minHeight) * (1 - topPercent)); 
           if (newHeight <= maxHeight) { 
            item.setLayoutParams(new AbsListView.LayoutParams(item.getWidth(), (int) newHeight)); 
            promoOverlay.setAlpha(topPercent/2); 
           } else { 
            item.setLayoutParams(new AbsListView.LayoutParams(item.getWidth(), (int) maxHeight)); 
            if (item.getTop() > 0) { 
             promoOverlay.setAlpha(0.5f); 
            } else { 
             promoOverlay.setAlpha(0f); 
            } 
           } 
          } else { 
           float topPercent = (-item.getTop())/maxHeight; 
           float newHeight = maxHeight - ((maxHeight - minHeight) * (topPercent)); 
           if (newHeight >= minHeight) { 
            item.setLayoutParams(new AbsListView.LayoutParams(item.getWidth(), (int) newHeight)); 
            promoOverlay.setAlpha(topPercent/2); 
           } else { 
            item.setLayoutParams(new AbsListView.LayoutParams(item.getWidth(), (int) minHeight)); 
           } 
           promoOverlay.setAlpha(0); 
          } 
         } else { 
          if (item.getTop() > 0) { 
           item.setLayoutParams(new AbsListView.LayoutParams(item.getWidth(), (int) minHeight)); 
           promoOverlay.setAlpha(0.5f); 
          } 
         } 

        } 
       } 
      } 
     } 
    }); 

} 
相關問題