package com.zjtd.bzcommunity.lib;import android.content.Context;import android.util.AttributeSet;import android.widget.ScrollView;public class myScrollView extends ScrollView {    public myScrollView(Context context) {          super(context);      }        public myScrollView(Context context, AttributeSet attrs) {          super(context, attrs);      }    //    public myScrollView(Context context, AttributeSet attrs, int defStyle) {  //        super(context, attrs, defStyle);  //    }          /**     * 公共接口:ScrollView滚动监听     */    public interface OnScrollChangedListener {          void onScrollChanged(ScrollView who, int x, int y, int oldx, int oldy);      }        private OnScrollChangedListener mOnScrollChangedListener;        @Override      protected void onScrollChanged(int x, int y, int oldx, int oldy) {          super.onScrollChanged(x, y, oldx, oldy);          if (mOnScrollChangedListener != null) {          //使用公共接口触发滚动信息的onScrollChanged方法,将滚动位置信息暴露给外部            mOnScrollChangedListener.onScrollChanged(this, x, y, oldx, oldy);          }      }        /**     * 暴露给外部的方法:设置滚动监听     * @param listener     */    public void setOnScrollChangedListener(OnScrollChangedListener listener) {          mOnScrollChangedListener = listener;      }  }

布局:

          android:id="@+id/mymyscrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >


                    android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="60dp"
            android:orientation="vertical" >
   



Activity:

private RelativeLayout layout_top_search; // 顶部渐变布局
private myScrollView mScrollView; // 整体ScrollView
private static final int START_ALPHA = 0;
private static final int END_ALPHA = 255;
private int fadingHeight = 600; // 当ScrollView滑动到什么位置时渐变消失(根据需要进行调整)
private Drawable drawable; // 顶部渐变布局需设置的Drawable

//-----------------------init-------------- drawable = getResources().getDrawable(R.color.red);
drawable.setAlpha(START_ALPHA);
layout_top_search.setBackgroundDrawable(drawable);
mScrollView.setOnScrollChangedListener(scrollChangedListener);


/**
* 公共接口:ScrollView的滚动监听 p l
*/
private OnScrollChangedListener scrollChangedListener = new OnScrollChangedListener() {
@Override
public void onScrollChanged(ScrollView who, int x, int y, int oldx,
int oldy) {
if (y > fadingHeight) {
y = fadingHeight; // 当滑动到指定位置之后设置颜色为纯色,之前的话要渐变---实现下面的公式即可


relativela_id.setBackgroundColor(Color.WHITE);
} else if (y < 0) {
y = 0;
} else {
relativela_id.setBackgroundColor(0x99FFFFFF);
}
drawable.setAlpha(y * (END_ALPHA - START_ALPHA) / fadingHeight
+ START_ALPHA);


}
};


更多相关文章

  1. Android(安卓)按钮点击事件
  2. Android(安卓)渐变色实现
  3. 实现RadioButton多行多列排列布局
  4. Android(安卓)Studio购物车,结算,二级目录
  5. Android手机定位案例代码
  6. 接收系统广播监听网络变化
  7. SeeKBarTest
  8. Android布局 屏幕滚动方法 ScrollView
  9. 监听网络变化的广播

随机推荐

  1. ------------------Android中对GridView,
  2. appium自动化测试总结(转载liangww)
  3. android 软件开发错误-解决记录
  4. [经验总结]eclipse转向android studio常
  5. Android(安卓)Studio开发工具异常与解决
  6. Flutter 启动页
  7. Android(安卓)zip文件压缩解压
  8. Android(安卓)自定义FloatView实现悬浮视
  9. 一览新的 Android(安卓)Gradle 构建工具:
  10. android获取view宽高的几种方法