안 드 로 이 드 가 listview 가 미 끄 러 질 때 그 라 데 이 션 상단 표시 줄 인 스 턴 스 코드 를 실현 합 니 다.

제 가 개발 할 때 이런 수 요 를 만 났 습 니 다.바로 listview 가 미 끄 러 지 는 과정 에서 상단 의 항목 이 투명 에서 점점 불투명 한 상태 로 바 뀌 어야 합 니 다.바로 다음 과 같은 효과 입 니 다.

가장 먼저 시 작 했 을 때 생각 하 는 것 은 매우 간단 했다.단지 listview 의 미끄럼 거 리 를 감청 한 다음 에 거리 에 따라 투명도 의 비례 를 계산 하면 되 지만 사실은 이렇게 한 것 이다.
다만 listview 를 가 져 오 는 미끄럼 거리 에서 직접 가 져 올 수 없 을 수도 있 습 니 다.동적 으로 계산 해 야 합 니 다.
아래 에 모든 코드 를 붙 여 주세요.인 코딩 하고 싶 지 않 아 요.요즘 감기 에 걸 려 서 머리 가 어 지 럽 고 아파 요.코드 가 좀 더 직관 적 이에 요.

private void initListener() { 
lvList.setOnScrollChangeListener(new View.OnScrollChangeListener() { 
@Override 
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
} 
}); 
lvList.setOnScrollListener(new AbsListView.OnScrollListener() { 
@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
} 
@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
// Logger.myLog("firstVisibleItem=" + firstVisibleItem + "visibleItemCount=" + visibleItemCount + "totalItemCount=" + totalItemCount); 
Logger.myLog(getScroolY()+"top=" + gettop()); 
tvText.setAlpha(getAlphaFloat(getScroolY())); 
} 
}); 
} 
/** 
*         
* @param dis 
* @return 
*/ 
public float getAlphaFloat(int dis){ 
int step = 5000; 
if(dis == 0){ 
return 0.0f; 
} 
if(dis < step){ 
return (float)(dis * (1.0/step)); 
}else{ 
return 1.0f; 
} 
} 
/** 
*         
* @return distance 
*/ 
public int getScroolY(){ 
View c = lvList.getChildAt(0); 
if(null == c){ 
return 0; 
} 
int firstVisiblePosition = lvList.getFirstVisiblePosition(); 
int top = c.getTop(); 
/** 
*     ,       top    listview                , 
*                ,             
*/ 
return firstVisiblePosition * c.getHeight() + Math.abs(top); 
} 
/** 
*             
* @return distance top 
*/ 
private int gettop(){ 
View c = lvList.getChildAt(0); 
if(null == c){ 
return 0; 
} 
return c.getTop(); 
} 
위 에서 말 한 것 은 소 편 이 소개 한 안 드 로 이 드 가 listview 가 미 끄 러 질 때 점점 상단 표시 줄 의 인 스 턴 스 코드 를 나타 내 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기