一些是查资料参考<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>
其中 setAlpha(0) 里面的参数 0.00 到 1.00 设置百分比透明度
// 对任何控件 View ListView ScrollView 都适用 // 设置 逐渐消逝; 逐渐消失 mListView.setVerticalFadingEdgeEnabled(true); // 设置消失的距离 mListView.setFadingEdgeLength(100);
后来发现另一种更简单的方法 可以直接通过View设置属性