package com.example.jingbin.cloudreader.ui.one; import android.app.Activity; import android.content.Intent; import android.databinding.DataBindingUtil; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import com.example.jingbin.cloudreader.R; import com.example.jingbin.cloudreader.bean.moviechild.SubjectsBean; import com.example.jingbin.cloudreader.databinding.ActivitySlideScroolViewBinding; import com.example.jingbin.cloudreader.utils.CommonUtils; import com.example.jingbin.cloudreader.utils.StringFormatUtil; import com.example.jingbin.cloudreader.view.CallBack_ScrollChanged; import com.example.jingbin.cloudreader.view.DiscoverScrollView; import com.example.jingbin.cloudreader.view.test.RCVListAdapter; import com.example.jingbin.cloudreader.view.test.StatusBarUtils; import java.util.Arrays; import static com.example.jingbin.cloudreader.view.statusbar.StatusBarUtil.getStatusBarHeight; /** * 暂时的电影详情页 2016-11-29 */ public class SlideScrollViewActivity extends AppCompatActivity { private RelativeLayout rlHead; private RecyclerView rcvGoodsList; private DiscoverScrollView discoverScrollView; private LinearLayout llHeader; private int slidingDistance; private int currScrollY = 0; private SubjectsBean subjectsBean; private ActivitySlideScroolViewBinding binding; private String TAG = "----MainActivity:"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.activity_slide_scrool_view); rlHead = binding.rlHead; rcvGoodsList = binding.rcvGoodsList; rcvGoodsList = binding.rcvGoodsList; discoverScrollView = binding.discoverScrollView; llHeader = binding.llHeader; if (getIntent() != null) { subjectsBean = (SubjectsBean) getIntent().getSerializableExtra("bean"); } // 先设置状态栏透明 StatusBarUtils.setTranslucentImageHeader(this, 0, rlHead); initNewSlidingParams(); if (binding.include.imgItemBg != null) { ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) binding.include.imgItemBg.getLayoutParams(); layoutParams.setMargins(0, -getStatusBarHeight(this), 0, 0); // DebugUtil.error("getStatusBarHeight:" + getStatusBarHeight(this)); } initRecyclerView(); // initScrollView(); setTitleBar(); setHeaderData(subjectsBean); } private void setHeaderData(SubjectsBean positionData) { binding.include.setSubjectsBean(positionData); } private void setTitleBar() { setSupportActionBar(binding.titleToolBar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { //去除默认Title显示 actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.icon_back); // actionBar.setTitle(subjectsBean.getTitle()); // actionBar.setSubtitle("主演:" + StringFormatUtil.formatName(subjectsBean.getCasts())); } // title binding.tvTitle.setText(subjectsBean.getTitle()); // 副标题 binding.tvSubtitle.setText("主演:" + StringFormatUtil.formatName(subjectsBean.getCasts())); binding.titleToolBar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } private void initScrollView() { discoverScrollView.setVisibility(View.VISIBLE); discoverScrollView.setCallBack_scrollChanged(new CallBack_ScrollChanged() { @Override public void onScrollChanged(int scrolledY) { scrollChangeHeader(scrolledY); } }); } private void initRecyclerView() { rcvGoodsList.setVisibility(View.VISIBLE); final RCVListAdapter adapter = new RCVListAdapter(this); View header = new View(this); header.setLayoutParams(new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); header.getLayoutParams().height = getResources().getDimensionPixelOffset(R.dimen.new_home_header_size) - getStatusBarHeight(this); adapter.setHeader(header); rcvGoodsList.setLayoutManager(new LinearLayoutManager(this)); rcvGoodsList.setItemAnimator(new DefaultItemAnimator()); rcvGoodsList.setAdapter(adapter); adapter.setDataSource(Arrays.asList("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")); adapter.notifyDataSetChanged(); rcvGoodsList.setOnScrollListener(new RecyclerView.OnScrollListener() { public int scrolledY = 0; @Override public void onScrolled(RecyclerView recyclerView, final int dx, final int dy) { super.onScrolled(recyclerView, dx, dy); scrolledY += dy; scrollChangeHeader(scrolledY); } }); } private void initNewSlidingParams() { int headerSize = getResources().getDimensionPixelOffset(R.dimen.new_home_header_size); int navBarHeight = getResources().getDimensionPixelOffset(R.dimen.nav_bar_height) + 2 * getStatusBarHeight(this); slidingDistance = headerSize - navBarHeight;// 172-(56+titleHeight) Log.d("HomeFragment", "slidingDistance" + slidingDistance); } /** * 根据页面滑动距离改变Header方法 */ private void scrollChangeHeader(int scrolledY) { if (scrolledY < 0) { scrolledY = 0; } if (scrolledY < slidingDistance) { // 状态栏渐变 StatusBarUtils.setTranslucentImageHeader(this, scrolledY * 50 / slidingDistance, rlHead); // title渐变 rlHead.setBackgroundColor(Color.argb(scrolledY * 50 / slidingDistance, 0x00, 0x00, 0x00)); // 背景图高度设置 llHeader.setPadding(0, -scrolledY, 0, 0); currScrollY = scrolledY; } else { StatusBarUtils.setTranslucentImageHeader(this, 50, rlHead); rlHead.setBackgroundColor(Color.argb(50, 0x00, 0x00, 0x00)); llHeader.setPadding(0, -slidingDistance, 0, 0); currScrollY = slidingDistance; } } /** * @param context activity * @param positionData bean * @param imageView imageView */ public static void start(Activity context, SubjectsBean positionData, ImageView imageView) { Intent intent = new Intent(context, SlideScrollViewActivity.class); intent.putExtra("bean", positionData); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(context, imageView, CommonUtils.getString(R.string.transition_movie_img));//与xml文件对应 ActivityCompat.startActivity(context, intent, options.toBundle()); } }