package com.example.jingbin.cloudreader.ui.one;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.example.jingbin.cloudreader.R;
import com.example.jingbin.cloudreader.bean.moviechild.SubjectsBean;
import com.example.jingbin.cloudreader.databinding.ActivityTestBinding;
import com.example.jingbin.cloudreader.adapter.MovieDetailPersonAdapter;
import com.example.jingbin.cloudreader.view.test.StatusBarUtils;
import java.util.ArrayList;
import java.util.List;
import jp.wasabeef.glide.transformations.BlurTransformation;
/**
* 第二种电影详情页
*/
public class TestActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private Toolbar mToolbar;
// private ImageView iv_title_bg;
// private RecyclerView mRecyclerView;
private MovieDetailPersonAdapter mMyAdapter;
private SubjectsBean subjectsBean;
private ActivityTestBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_test);
if (getIntent() != null) {
subjectsBean = (SubjectsBean) getIntent().getSerializableExtra("bean");
}
initView();
setData();
}
private void setData() {
if (subjectsBean!=null) {
// 高斯模糊背景
Glide.with(this).load(subjectsBean.getImages().getLarge())
.error(R.drawable.stackblur_default)
// .placeholder(R.drawable.stackblur_default)
.bitmapTransform(new BlurTransformation(this, 12, 5)).listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
mToolbar.setBackgroundColor(Color.TRANSPARENT);
binding.ivTitleBg.setImageAlpha(0);
binding.ivTitleBg.setVisibility(View.VISIBLE);
return false;
}
}).into(binding.ivTitleBg);
}
}
private void initView() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mToolbar.setBackgroundColor(Color.TRANSPARENT);
// mToolbar.inflateMenu(R.menu.toolbar_right_menu);
// mToolbar.setTitle(R.string.title);
mToolbar.setTitleTextColor(Color.WHITE);
// MovieDetailPersonAdapter adapter = new MovieDetailPersonAdapter();
// adapter.addAll(objects);
mMyAdapter = new MovieDetailPersonAdapter();
mMyAdapter.setData(getData(), subjectsBean);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
binding.xrecyclerTest.setLayoutManager(layoutManager);
binding.xrecyclerTest.setAdapter(mMyAdapter);
// toolbar 的高
int toolbarHeight = mToolbar.getLayoutParams().height;
Log.i(TAG, "toolbar height:" + toolbarHeight);
final int headerBgHeight = toolbarHeight + getStatusBarHeight(this);
Log.i(TAG, "headerBgHeight:" + headerBgHeight);
ViewGroup.LayoutParams params = binding.ivTitleBg.getLayoutParams();
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
params.height = headerBgHeight;
binding.ivTitleBg.setImageAlpha(0);
//
StatusBarUtils.setTranslucentImageHeader(this, 0, mToolbar);
binding.xrecyclerTest.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);
View headerView = null;
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
int firstVisibleItem = manager.findFirstVisibleItemPosition();
if (firstVisibleItem == 0) {
headerView = recyclerView.getChildAt(firstVisibleItem);
}
if (headerView == null) {
return;
}
// 从头部高斯图底部到titlebar底部开始就设置不透明
float alpha = Math.abs(headerView.getTop()) * 1.0f / (headerView.getHeight() - headerBgHeight);
Log.e(TAG, "alpha:" + alpha + "top :" + headerView.getTop() + " height: " + (headerView.getHeight() - 2 * headerBgHeight));
Drawable drawable = binding.ivTitleBg.getDrawable();
if (drawable != null && alpha <= 1) {
drawable.mutate().setAlpha((int) (alpha * 255));
binding.ivTitleBg.setImageDrawable(drawable);
} else {
binding.ivTitleBg.setImageDrawable(drawable);
}
}
});
}
public List<String> getData() {
ArrayList<String> list = new ArrayList<>();
list.add("你");
list.add("是");
list.add("导");
list.add("演");
list.add("演");
list.add("演");
list.add("演");
list.add("演");
list.add("演");
list.add("演");
list.add("演");
return list;
}
private int getStatusBarHeight(Context context) {
// 获得状态栏高度
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
return context.getResources().getDimensionPixelSize(resourceId);
}
@Override
public void finish() {
super.finish();
// overridePendingTransition(R.anim.push_fade_out, R.anim.push_fade_in);
}
/**
* @param context activity
* @param positionData bean
* @param imageView imageView
*/
public static void start(Activity context, SubjectsBean positionData, ImageView imageView) {
Intent intent = new Intent(context, TestActivity.class);
intent.putExtra("bean", positionData);
// ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(context,
// imageView, CommonUtils.getString(R.string.transition_movie_img));//与xml文件对应
// ActivityOptionsCompat options = ActivityOptionsCompat.makeBasic();// 右边进右边出
// ActivityCompat.startActivity(context, intent, options.toBundle());
context.startActivity(intent);
}
}