ListView的漸變。。淡入和淡出 第一個Item和最後一個Item
阿新 • • 發佈:2019-02-19
一些是查資料參考
其中 setAlpha(0) 裡面的引數 0.00 到 1.00 設定百分比透明度<span style="font-size:18px;">public class AlphaListView extends ListView implements AbsListView.OnScrollListener { private int height; private int itemHeight; public AlphaListView(Context context) { super(context); init(); } public AlphaListView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public AlphaListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { setOnScrollListener(this); } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //將所有View的透明度設定為1 for(int i = 0; i < getChildCount(); i++){ getChildAt(i).setAlpha(1); } //得到第一個可見的View View v = getChildAt(0); if(v != null){ //得到這個v的高度 itemHeight = v.getHeight(); //得到可見部分 int visiableLength = v.getBottom(); //得到可見不分部分比例 float ratio = visiableLength * 1.0f / itemHeight; v.setAlpha(ratio); } //得到最後一個可見的View v = getChildAt(visibleItemCount - 1); if(v != null){ //得到這個v的高度 itemHeight = v.getHeight(); //得到可見部分 int visiableLength = height - v.getTop(); //得到可見不分部分比例 float ratio = visiableLength * 1.0f / itemHeight; v.setAlpha(ratio); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { height = MeasureSpec.getSize(heightMeasureSpec); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } }</span>
// 對任何控制元件 View ListView ScrollView 都適用
// 設定 逐漸消逝; 逐漸消失
mListView.setVerticalFadingEdgeEnabled(true);
// 設定消失的距離
mListView.setFadingEdgeLength(100);
後來發現另一種更簡單的方法 可以直接通過View設定屬性