美文网首页
自定义View系列(十)仿QQ好友动态状态栏变色

自定义View系列(十)仿QQ好友动态状态栏变色

作者: Ayres | 来源:发表于2017-07-18 17:33 被阅读0次

大家都见过QQ好友动态,不知道你注意到没有,当我们滑动时状态栏会变颜色。今天就自己实现以下这种效果。

1.设置全屏
public static void setStatusBarTranslucent(Activity activity){
//5.0以上
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
    //设置全屏
   View decorView= activity.getWindow().getDecorView();
   int option= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
    decorView.setSystemUiVisibility(option);
    activity.getWindow().setStatusBarColor(Color.TRANSPARENT);

}else if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){
    //设置全屏
    activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
2.布局文件(随便写了一个),相信大家都会
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.projectdemo.zwz.slidingmenu.MyScrollView
    android:id="@+id/scroll_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
    android:id="@+id/image_view"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:background="@color/colorAccent"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:text="hollod word"/>


<TextView
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:text="hollod word"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:text="hollod word"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:text="hollod word"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:text="hollod word"/>
</LinearLayout>
</com.projectdemo.zwz.slidingmenu.MyScrollView>

<LinearLayout
android:id="@+id/ll_title"
android:layout_width="match_parent"
android:layout_height="70dp"
android:gravity="center"
android:background="@android:color/holo_blue_light">
 <TextView
android:text="头部"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
 </LinearLayout>
</RelativeLayout>
3.自定义ScrollView,主要设置监听,不停返回坐标位置

只需要重写onScrollChanged(int l, int t, int oldl, int oldt) ;方法
设置监听回调

  public interface ScrollChangedListener{
    public void onScroll(int l, int t, int oldl, int oldt);
   }
     private ScrollChangedListener mListener;
 public void setOnScrollChangeListener(ScrollChangedListener listener){
    mListener=listener;
}

onScrollChanged(int l, int t, int oldl, int oldt) 中实现回调

 @Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    super.onScrollChanged(l, t, oldl, oldt);
    if (mListener!=null){
        mListener.onScroll(l,t,oldl,oldt);
    }
}

其实就是如此简单

4.主要实现

.刚进来背景完全透明

       llTitle = (LinearLayout) findViewById(R.id.ll_title);
       llTitle.getBackground().setAlpha(0);

获取ImageView和llTitle高度

    image_view.post(new Runnable() {
        @Override
        public void run() {
            mImageHeight=image_view.getMeasuredHeight();
        }
    });
    llTitle.post(new Runnable() {
        @Override
        public void run() {
            mLLtitleHeight= llTitle.getMeasuredHeight();
        }
    });

不断监听滚动 判断当前滚动的位置计算背景透明度

    scroll_view.setOnScrollChangeListener(new MyScrollView.ScrollChangedListener() {
        @Override
        public void onScroll(int l, int t, int oldl, int oldt) {
           //获取图片的高度,根据当前滚动的位置  计算alpha
            if (mImageHeight==0)return;
            if (mLLtitleHeight==0)return;

            float alpha=(float)t/(mImageHeight-mLLtitleHeight);

            if (alpha<=0){
                alpha=0;
            }

            if (alpha>1){
                alpha=1;
            }

            llTitle.getBackground().setAlpha((int) (alpha*255));

        }
    });

相关文章

网友评论

      本文标题:自定义View系列(十)仿QQ好友动态状态栏变色

      本文链接:https://www.haomeiwen.com/subject/hwjhkxtx.html