package com.llf.basemodel.image; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.view.View; import android.widget.LinearLayout; import com.llf.basemodel.R; import com.llf.basemodel.base.BaseActivity; import com.llf.basemodel.commonwidget.PullBackLayout; import com.llf.basemodel.utils.SettingUtil; import java.util.ArrayList; import java.util.List; /** * Created by llf on 2017/3/9. */ public class BigImagePagerActivity extends BaseActivity implements PullBackLayout.Callback { public static void startImagePagerActivity(Activity activity, ArrayList<String> imgUrls, int position) { Intent intent = new Intent(activity, BigImagePagerActivity.class); intent.putStringArrayListExtra(INTENT_IMGURLS, imgUrls); intent.putExtra(INTENT_POSITION, position); activity.startActivity(intent); activity.overridePendingTransition(R.anim.slide_in, R.anim.slide_out); } public static final String INTENT_IMGURLS = "imgurls"; public static final String INTENT_POSITION = "position"; private ViewPager mViewPager; private LinearLayout guideGroup; private PullBackLayout mPullBackLayout; private List<View> guideViewList = new ArrayList<>(); private ColorDrawable backgroudColor; @Override public int getLayoutId() { return R.layout.activity_big_image; } @Override public void initView() { backgroudColor = new ColorDrawable(Color.BLACK); mViewPager = (ViewPager) findViewById(R.id.viewPager); guideGroup = (LinearLayout) findViewById(R.id.guideGroup); mPullBackLayout = (PullBackLayout) findViewById(R.id.pullback); mPullBackLayout.setCallback(this); int startPos = getIntent().getIntExtra(INTENT_POSITION, 0); ArrayList<String> imgUrls = getIntent().getStringArrayListExtra(INTENT_IMGURLS); ImageAdapter adapter = new ImageAdapter(this, imgUrls); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < guideViewList.size(); i++) { guideViewList.get(i).setSelected(i == position ? true : false); } } @Override public void onPageScrollStateChanged(int state) { } }); mViewPager.setAdapter(adapter); mViewPager.setCurrentItem(startPos); addGuideView(guideGroup, startPos, imgUrls); } private void addGuideView(LinearLayout guideGroup, int startPos, ArrayList<String> imgUrls) { if (imgUrls != null && imgUrls.size() > 0) { guideViewList.clear(); for (int i = 0; i < imgUrls.size(); i++) { View view = new View(this); view.setBackgroundResource(R.drawable.selector_guide_bg); view.setSelected(i == startPos ? true : false); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(SettingUtil.dip2px(BigImagePagerActivity.this, 6), SettingUtil.dip2px(BigImagePagerActivity.this, 6)); layoutParams.setMargins(10, 0, 0, 0); guideGroup.addView(view, layoutParams); guideViewList.add(view); } } } /** * 监听返回键 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { BigImagePagerActivity.this.finish(); BigImagePagerActivity.this.overridePendingTransition(R.anim.slide_in, R.anim.slide_out); return true; } return super.onKeyDown(keyCode, event); } @Override public void onPullStart() { guideGroup.setVisibility(View.INVISIBLE); } @Override public void onPull(float progress) { progress = Math.min(1f, progress * 3f); backgroudColor.setAlpha((int) (0xff/*255*/ * (1f - progress))); mPullBackLayout.setBackgroundColor(backgroudColor.getColor()); } @Override public void onPullCancel() { guideGroup.setVisibility(View.VISIBLE); } @Override public void onPullComplete() { supportFinishAfterTransition(); } }