顶部状态栏透明和滑动渐变 api21以上

 if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setStatusBarColor(Color.TRANSPARENT);//将状态栏设置成透明色
        }

顶部状态栏透明 并切布局顶头,View的 这两个属性要同时使用才有效果

ActionBar actionBar = getSupportActionBar();

        actionBar.hide();

在设置状态栏透明的同时通常会设置ActionBar隐藏

scrollView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                height = top_image.getHeight();//顶部图片高度
                Log.i("TAG","y--->"+scrollView.getScrollY()+"    height-->"+height);


                if (scrollView.getScrollY()>0){//开始向下滚动

                    if (scrollView.getScrollY()<height){//滚动范围小于图片高度 
                        float scale = (float) scrollView.getScrollY() / height;
                        float alpha = (255 * scale);
                        head_layout.setBackgroundColor(Color.argb((int) alpha, 0x33, 0x33,
                                0x33));

                    }

                }


                return false;
            }
        });

颜色渐变主要逻辑

其余代码

package com.taisheng.fh.myapplication.two_ten.two_ten_two;

import android.graphics.Color;
import android.os.Build;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.lpf.lpf.utils.ObservableScrollView;
import com.taisheng.fh.myapplication.R;

public class TwoTenTwoActivity extends AppCompatActivity  {
//implements ObservableScrollView.ScrollViewListener
    private ObservableScrollView scrollView;
    private ListView klist;
    private RelativeLayout head_layout,top_image;
    private int height ;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two_ten_two);
        /**
         *
         *  全屏显示
         *
         *  View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(option);
         */

        /**
         *  顶部状态栏透明   并切布局顶头
         *
         *  View的 这个属性要同时使用才有效果
         *
         * if (Build.VERSION.SDK_INT >= 21) {
                View decorView = getWindow().getDecorView();
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                getWindow().setStatusBarColor(Color.TRANSPARENT);
            }
         */
        if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        /**
         *
         * if (Build.VERSION.SDK_INT >= 21) {
                View decorView = getWindow().getDecorView();
                int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//表示会让应用的主体内容占用系统导航栏的空间

                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN        //注意两个Flag必须要结合在一起使用
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;           // 表示会让应用的主体内容占用系统状态栏的空间

                decorView.setSystemUiVisibility(option);
                getWindow().setNavigationBarColor(Color.TRANSPARENT); //方法将导航栏设置成透明色
                getWindow().setStatusBarColor(Color.TRANSPARENT);   //将状态栏设置成透明色
             }
         */

        ActionBar actionBar = getSupportActionBar();

        actionBar.hide();

        head_layout = (RelativeLayout) findViewById(R.id.head_layout);
        top_image = (RelativeLayout) findViewById(R.id.top_image);
        scrollView = (ObservableScrollView) findViewById(R.id.scrollview);
        head_layout.setBackgroundColor(Color.argb((int) 0, 0x33, 0x33,
                0x33));
        klist = (ListView) findViewById(R.id.klist);
        klist.setFocusable(false);
        klist.setAdapter(new kLisSadap());



//        ViewTreeObserver vto = klist.getViewTreeObserver();
//        vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
//            @SuppressWarnings("deprecation")
//            @Override
//            public void onGlobalLayout() {
//                klist.getViewTreeObserver().removeGlobalOnLayoutListener(
//                        this);
                height = 1800;
//                klist.getWidth();
//
//                scrollView.setScrollViewListener(TwoTenTwoActivity.this);
//            }
//        });

        scrollView.setScrollViewListener(TwoTenTwoActivity.this);

        scrollView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                height = top_image.getHeight();
                Log.i("TAG","y--->"+scrollView.getScrollY()+"    height-->"+height);


                if (scrollView.getScrollY()>0){

                    if (scrollView.getScrollY()<height){
                        float scale = (float) scrollView.getScrollY() / height;
                        float alpha = (255 * scale);
                        head_layout.setBackgroundColor(Color.argb((int) alpha, 0x33, 0x33,
                                0x33));

                    }

                }


                return false;
            }
        });


    }


//    @Override
//    public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) {
//        height = top_image.getHeight();
//        Log.i("TAG","y--->"+y+"    height-->"+height);
//        if (y>0){
//
//            if (y<height){
//                float scale = (float) y / height;
//                float alpha = (255 * scale);
//                head_layout.setBackgroundColor(Color.argb((int) alpha, 0x33, 0x33,
//                        0x33));
//
//            }
//
//        }
//
//    }


    class kLisSadap extends BaseAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 30;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView textView = new TextView(TwoTenTwoActivity.this);
            textView.setHeight(150);
//          textView.setTextSize(50);
            textView.setText("第"+position+"条");

            return textView;
        }




    }
//    //当你确定要使用沉浸式模式,那么只需要重写Activity的onWindowFocusChanged()方法,然后加入如下逻辑即可
//    @Override
//    public void onWindowFocusChanged(boolean hasFocus) {
//        super.onWindowFocusChanged(hasFocus);
//        if (hasFocus && Build.VERSION.SDK_INT >= 19) {
//            View decorView = getWindow().getDecorView();
//            decorView.setSystemUiVisibility(
//                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
//                            | View.SYSTEM_UI_FLAG_FULLSCREEN
//                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
//        }
//    }

}



这里写图片描述
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值