MainActivity
package com.qiushui.blurredviewdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
/**
* Demo
* @author Qiushui
*/
public class MainActivity extends AppCompatActivity {
/**
* basic btn
*/
private Button mBasicBtn;
/**
* weather btn
*/
private Button mWeatherBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
mBasicBtn = (Button) findViewById(R.id.basic_blur_btn);
mWeatherBtn = (Button) findViewById(R.id.weather_blur_btn);
mBasicBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击跳转到通过seekbar控制模糊度界面
startActivity(new Intent(MainActivity.this, BlurredViewBasicActivity.class));
}
});
mWeatherBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击跳转到滑动recyclerview列表进行模糊界面
startActivity(new Intent(MainActivity.this, WeatherActivity.class));
}
});
}
}
BlurredViewBasicActivity seekbar拖动代码
package com.qiushui.blurredviewdemo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.TextView;
import com.qiushui.blurredview.BlurredView;
/**
* Basic Demo
* @author Qiushui
*/
public class BlurredViewBasicActivity extends AppCompatActivity {
/**
* 进度条SeekBar
*/
private SeekBar mSeekBar;
/**
* 显示进度的文字
*/
private TextView mProgressTv;
/**
* Blurredview
*/
private BlurredView mBlurredView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blurrediview_basic);
//获得模糊窗口
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 初始化视图
initViews();
// 处理seekbar滑动事件
setSeekBar();
}
/**
* 初始化视图
*/
private void initViews() {
mSeekBar = (SeekBar) findViewById(R.id.activity_main_seekbar);
mProgressTv = (TextView) findViewById(R.id.activity_main_progress_tv);
mBlurredView = (BlurredView) findViewById(R.id.activity_main_blurredview);
// 可以在代码中使用setBlurredImg()方法指定需要模糊的图片
mBlurredView.setBlurredImg(getResources().getDrawable(R.drawable.dayu));
}
/**
* 处理seekbar滑动事件进行模糊
*/
private void setSeekBar() {
mSeekBar.setMax(100);
//mseekbar监听事件
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
//模糊度
mBlurredView.setBlurredLevel(progress);
//seekbar拖动数字
mProgressTv.setText(String.valueOf(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
WeatherActivity 滑动recyclerview进行模糊界面代码
package com.qiushui.blurredviewdemo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.WindowManager;
import com.qiushui.blurredview.BlurredView;
/**
* Weather Demo
* @author Qiushui
*/
public class WeatherActivity extends AppCompatActivity {
/**
* blurredview
*/
private BlurredView mBlurredView;
/**
* RecyclerView
*/
private RecyclerView mRecyclerView;
private int mScrollerY;
private int mAlpha;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blurred_weather_activity);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
mBlurredView = (BlurredView) findViewById(R.id.yahooweather_blurredview);
mRecyclerView = (RecyclerView) findViewById(R.id.yahooweather_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(new RecyclerViewAdapter(this));
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
mScrollerY += dy;
if (Math.abs(mScrollerY) > 1000) {
mBlurredView.setBlurredTop(100);
mAlpha = 100;
} else {
mBlurredView.setBlurredTop(mScrollerY / 10);
mAlpha = Math.abs(mScrollerY) / 10;
}
mBlurredView.setBlurredLevel(mAlpha);
}
});
}
}
Recyclerview适配器代码package com.qiushui.blurredviewdemo;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Recycler adapter
*
* @author Qiushui
*/
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final Context context;
private static final int ITEM_COUNT = 10;
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
public RecyclerViewAdapter(Context context) {
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_HEADER) {
return new HeaderHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_header, parent, false));
}
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_item, parent, false));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return ITEM_COUNT;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return TYPE_HEADER;
} else {
return TYPE_ITEM;
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
}
private class HeaderHolder extends RecyclerView.ViewHolder {
public HeaderHolder(View itemView) {
super(itemView);
}
}
}
man布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/basic_blur_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Basic Blur"/>
<Button
android:id="@+id/weather_blur_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="Weather"/>
</LinearLayout>
blurred_weather_activity.xml 布局
<?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"
android:orientation="vertical">
<com.qiushui.blurredview.BlurredView
android:id="@+id/yahooweather_blurredview"
app:src="@drawable/dayu"
app:move="true"
app:disableBlurred="false"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.v7.widget.Toolbar
android:id="@+id/yahooweather_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_shape">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:paddingTop="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="ChongQin"
android:textColor="@android:color/white"
android:textSize="18sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="14:28 CST"
android:textColor="@android:color/white"
android:textSize="10sp"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
<android.support.v7.widget.RecyclerView
android:id="@+id/yahooweather_recyclerview"
android:layout_below="@id/yahooweather_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
blurrediview_basic.xml 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.qiushui.blurredview.BlurredView
android:id="@+id/activity_main_blurredview"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="80dp">
<SeekBar
android:layout_marginTop="@dimen/activity_vertical_margin"
android:id="@+id/activity_main_seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"/>
<TextView
android:id="@+id/activity_main_progress_tv"
android:text="0"
android:textSize="24sp"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
recyclerview_header.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="sans-serif-thin"
android:gravity="bottom"
android:text="37°"
android:textColor="@android:color/white"
android:textSize="90sp"/>
</LinearLayout>
recyclerview_item.xml 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_marginTop="36dp"
android:background="#44000000"
android:paddingLeft="@dimen/activity_vertical_margin"
android:layout_width="match_parent"
android:layout_height="120dp">
<TextView
android:text="WeatherInfo"
android:textSize="24sp"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:textColor="@android:color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:text="Show more info"
android:textColor="@android:color/white"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
加jar包
recyclerview包
compile 'com.android.support:recyclerview-v7:24.0.0' compile 'com.qiushui:blurredview:0.8.1'