別問,拷貝上就好使,傻瓜操作!!!
傳過來的數據:
JSONArray jsonArray = new JSONArray(); jsonArray.put("https://vip.wenes.cn/khmember/images/wenes/logo_new.png"); jsonArray.put("https://vip.wenes.cn/khmember/images/wenes/logo_new.png"); jsonArray.put("https://vip.wenes.cn/khmember/images/wenes/logo_new.png"); startActivity(new Intent(this, ShowImageActivity.class) //圖片路徑 .putExtra("json", jsonArray.toString()) //圖片位置 .putExtra("index", 1) ); }
首先是ShowImageViewActivity:
public class ShowImageActivity extends AppCompatActivity { JSONArray jsonArray = null; private int index; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_image); // setWindowStatusBarColor(this, R.color.black); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE); viewPager = (ViewPager) findViewById(R.id.viewPager); Intent intent = getIntent(); String json = intent.getStringExtra("json"); index = intent.getIntExtra("index", -1); ArrayList<String> arrayList = new ArrayList<>(); if (!TextUtils.isEmpty(json)) { try { jsonArray = new JSONArray(json); if(index != -1){ if (jsonArray != null) { 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); } } 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(); } } 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.imageView_item); Glide.with(ShowImageActivity.this).load(arrayList.get(position)).into(viewById); container.addView(inflate); return inflate; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } 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) { finish(); } isMove = false; break; } return super.dispatchTouchEvent(event); } } 其次是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" tools:context=".ShowImageActivity"> <com.rxjy.myapplication.MyViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000" ></com.rxjy.myapplication.MyViewPager> </LinearLayout>
然後自定義一個ViewPager:
public class MyViewPager extends ViewPager { public MyViewPager(@NonNull Context context) { super(context); } public MyViewPager(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent ev) { try { return super.onTouchEvent(ev); } catch (IllegalArgumentException ex) { ex.printStackTrace(); } return false; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (IllegalArgumentException ex) { ex.printStackTrace(); } return false; } }
對了,還有ViewPagerAdapter的xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/imageView_item" android:src="@mipmap/ic_launcher" /> </RelativeLayout>
最後PhotoView的依賴:
implementation 'com.github.chrisbanes.photoview:library:1.2.4'
項目的grade中的AllProject下
maven { url "https://jitpack.io" }
對了還需要一個V4包和Glide:
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.github.bumptech.glide:glide:3.7.0'