一些是查资料参考
<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设置属性