老样子,没有废话直接干货。
首先Activity代码:
public class ShowImageActivity extends BaseActivity { @Bind(R.id.viewPager) ViewPager viewPager; @Bind(R.id.show_image_text) TextView showImageText; @Bind(R.id.iv_back) ImageView ivBack; @Bind(R.id.tv_title) TextView tvTitle; @Bind(R.id.image_text) TextView imageText; @Bind(R.id.shousuo_image) ImageView shousuoImage; @Bind(R.id.shousuo_text) TextView shousuoText; @Bind(R.id.shousuo) LinearLayout shousuo; @Bind(R.id.title_relative) RelativeLayout titleRelative; @Bind(R.id.show_popup) LinearLayout showPopup; private String context; JSONArray jsonArray = null; private JSONArray jsonContentArray; private int index; private JSONArray jsonTextArray; @Override public int getLayout() { return R.layout.activity_show_image; } @Override protected void onDestroy() { super.onDestroy(); } @Override protected void onStop() { super.onStop(); } @Override protected void onResume() { super.onResume(); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); } private boolean isText = false; @Override public void initData() { titleRelative.setBackgroundColor(getResources().getColor(R.color.black)); tvTitle.setText("图片详情"); setWindowStatusBarColor(this, R.color.black); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE); Intent intent = getIntent(); String title = intent.getStringExtra("title"); context = intent.getStringExtra("context"); String json = intent.getStringExtra("json"); String text = intent.getStringExtra("text"); String jsonContent = intent.getStringExtra("jsonContent"); index = intent.getIntExtra("index", -1); if (!TextUtils.isEmpty(text)) { try { jsonTextArray = new JSONArray(text); } catch (JSONException e) { e.printStackTrace(); } } if (jsonContent != null) { try { jsonContentArray = new JSONArray(jsonContent); } catch (JSONException e) { e.printStackTrace(); } } tvTitle.setText(title); ivBack.setVisibility(View.VISIBLE); ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); finish(); } }); ArrayList<String> arrayList = new ArrayList<>(); if (!TextUtils.isEmpty(json)) { try { jsonArray = new JSONArray(json); if (jsonArray != null) { if (TextUtils.isEmpty(context)) { imageText.setVisibility(View.VISIBLE); if (jsonTextArray != null) { imageText.setText(jsonTextArray.getString(0)); } showImageText.setText(jsonContentArray.getString(0)); } else { imageText.setVisibility(View.GONE); showImageText.setText(context + " " + 1 + "/" + jsonArray.length()); } for (int i = 0; i < jsonArray.length(); i++) { String string = jsonArray.getString(i); arrayList.add(string); } } } catch (JSONException e) { e.printStackTrace(); } } PagerAdapter pagerAdapter = new PagerAdapter(arrayList); viewPager.setAdapter(pagerAdapter); if (index != -1) { viewPager.setCurrentItem(index); if (jsonArray != null) { if (TextUtils.isEmpty(context)) { try { showImageText.setText(jsonContentArray.getString(index)); } catch (JSONException e) { e.printStackTrace(); } } else { showImageText.setText(context + " " + (index + 1) + "/" + jsonArray.length()); } } } viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { // 显示ui isText = false; titleRelative.setVisibility(View.VISIBLE); imageText.setVisibility(View.VISIBLE); showImageText.setVisibility(View.VISIBLE); if (jsonArray != null) { if (TextUtils.isEmpty(context)) { if (jsonTextArray != null) { try { imageText.setText(jsonTextArray.getString(position)); } catch (JSONException e) { e.printStackTrace(); } } try { showImageText.setText(jsonContentArray.getString(position)); } catch (JSONException e) { e.printStackTrace(); } } else { showImageText.setText(context + " " + (position + 1) + "/" + jsonArray.length()); } } } @Override public void onPageScrollStateChanged(int state) { } }); } public static void setWindowStatusBarColor(Activity activity, int colorResId) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(activity.getResources().getColor(colorResId)); } } catch (Exception e) { e.printStackTrace(); } } float x1; float x2; float y1; float y2; boolean isMove = false; @Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //当手指按下的时候 x1 = event.getX(); y1 = event.getY(); break; case MotionEvent.ACTION_MOVE: //当手指移动的时候 x2 = event.getX(); y2 = event.getY(); if ((y1 - y2 > 50) || (y2 - y1 > 50) || (x1 - x2 > 50) || (x2 - x1 > 50)) { isMove = true; } break; case MotionEvent.ACTION_UP: //当手指抬起的时候 if (!isMove) { if (isText) { // 显示ui isText = false; titleRelative.setVisibility(View.VISIBLE); imageText.setVisibility(View.VISIBLE); showImageText.setVisibility(View.VISIBLE); } else { // 隐藏ui isText = true; titleRelative.setVisibility(View.INVISIBLE); imageText.setVisibility(View.INVISIBLE); showImageText.setVisibility(View.INVISIBLE); } } isMove = false; break; } return super.dispatchTouchEvent(event); } class PagerAdapter extends android.support.v4.view.PagerAdapter { public ArrayList<String> arrayList; public PagerAdapter(ArrayList<String> arrayList) { this.arrayList = arrayList; } @Override public int getCount() { return arrayList.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { View inflate = LayoutInflater.from(ShowImageActivity.this).inflate(R.layout.show_image_viewpager_item, null); PhotoView viewById = inflate.findViewById(R.id.photoView); RequestOptions options = new RequestOptions(); options.placeholder(R.mipmap.zhanweitu); Glide.with(ShowImageActivity.this).load(arrayList.get(position)).apply(options).into(viewById); container.addView(inflate); return inflate; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } @Override protected BasePresenter onCreatePresenter() { return null; } }
然后是Activity的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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <include layout="@layout/include_header_layout"></include> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <com.example.asus.customer.weight.MyViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000" /> <TextView android:id="@+id/show_image_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_margin="20px" android:background="@drawable/touming_hei" android:padding="10px" android:text="周围环境 1/10" android:textColor="#fff" android:textSize="26px" /> <TextView android:id="@+id/image_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#4b000000" android:paddingBottom="20px" android:paddingLeft="35px" android:paddingRight="80px" android:paddingTop="20px" android:text="" android:textColor="#FFFFFF" android:textSize="26px" android:visibility="visible" /> <LinearLayout android:id="@+id/shousuo" android:layout_width="100px" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:gravity="center" android:orientation="vertical" android:paddingLeft="20px" android:visibility="gone"> <ImageView android:id="@+id/shousuo_image" android:layout_width="40px" android:layout_height="40px" android:src="@drawable/shangxia_shouhui" /> <TextView android:id="@+id/shousuo_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10px" android:layout_marginTop="10px" android:ems="1" android:text="展开" android:textColor="#dbdbdb" android:textSize="28px" /> </LinearLayout> </RelativeLayout> </LinearLayout>
当然还有ViewPager的视图:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <uk.co.senab.photoview.PhotoView android:id="@+id/photoView" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.constraint.ConstraintLayout>
Activity上面传过来了一堆参数傻眼了吧,解释一下:
adapter.setListDataCallBack(new NewGongYongAdapter.ListDataCallBack() { @Override public void setOnListDataClick(int position) { JSONArray jsonArray = new JSONArray(); JSONArray jsonContent = new JSONArray(); JSONArray josnText = new JSONArray(); for (int i = 0; i < list.size(); i++) { AnLiBean.BodyBean bodyBean = list.get(i); String catalogName = bodyBean.getIndustryTypeName();//标题 String filePath = bodyBean.getPreview();//图片路径 String projectName = bodyBean.getProjectName();//图片详细介绍 //图片详细介绍 josnText.put(projectName); //图片路径 jsonArray.put(filePath); //标题 jsonContent.put(catalogName); } Intent intent = new Intent(NewQiYeActivity.this, ShowImageActivity.class); intent.putExtra("title", "详细照片"); intent.putExtra("json", jsonArray.toString()); intent.putExtra("context", ""); intent.putExtra("index", position); intent.putExtra("jsonContent", jsonContent.toString()); intent.putExtra("text", josnText.toString()); startActivity(intent); } });
直接Copy拿走用即可。简单粗暴!