剛剛遇到這個應用程序RetailMeNot Coupons。使用的列表視圖是自定義的,看起來很酷。最初,該列表顯示較小的子項目圖像。隨着用戶向上滾動,子項目完全展開以顯示更大的圖像。Android:像RetailMeNot應用程序的ListView
出於好奇,我打算在測試應用程序中構建一個類似的列表視圖。 我確定這是一個自定義列表視圖,有沒有人看過類似列表視圖的庫或實現?
剛剛遇到這個應用程序RetailMeNot Coupons。使用的列表視圖是自定義的,看起來很酷。最初,該列表顯示較小的子項目圖像。隨着用戶向上滾動,子項目完全展開以顯示更大的圖像。Android:像RetailMeNot應用程序的ListView
出於好奇,我打算在測試應用程序中構建一個類似的列表視圖。 我確定這是一個自定義列表視圖,有沒有人看過類似列表視圖的庫或實現?
我試過直接使用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);
}
}
}
}
}
}
});
}
可能這是一個混合的應用程序。 – Apurva 2015-03-25 07:34:16
它不是Hybrid應用程序它的anroid的本地應用程序@Apurva – 2015-05-23 05:32:54
@Faheem你實現了這個嗎? – 2015-05-23 05:33:32