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);
// }
// }
}