android看大图软件,Android放大图片查看,可旋转屏幕,手势放大图片工具类。

老样子,没有废话直接干货。

首先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();

}

});

ArrayListarrayList = 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 ArrayListarrayList;

public PagerAdapter(ArrayListarrayList) {

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:

当然还有ViewPager的视图:

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拿走用即可。简单粗暴!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值