Androidがlistviewスライドを実現する時に、徐々にトップバーの実例コードが現れます。
開発の際にこのようなニーズに遭遇しました。すなわち、listviewのスライドの中で、トップのコラムが透明から徐々に不透明になっていく必要があります。以下の効果です。
最初は簡単に考えていましたが、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();
}
以上は小编が绍介したAndroidがlistviewスライドを実现する时だんだん上の段阶の実例のコードを现して、みんなに助けがあることを望んで、もしみんなはいかなる疑问があるならば、メッセージを下さい、小编は直ちにみんなのに返答します。ここでも私たちのサイトを応援してくれてありがとうございます。