1.使用方式

Intent intent = new Intent(FriendCircleActivity.this, ImageGralleryPagerActivity.class);
//0,索引,第几张图片
intent.putExtra(ImageGralleryPagerActivity.EXTRA_IMAGE_INDEX, 0);
ArrayList<String> imgs = new ArrayList<String>();
imgs.add(“图片URL”);
intent.putStringArrayListExtra("imgs", imgs);
startActivity(intent);

2.展示大图Activity

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.SpannableString;
import android.text.style.RelativeSizeSpan;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.TextView; import com.jlm.happyselling.R;
import com.jlm.happyselling.base.ECSuperActivity;
import com.jlm.happyselling.helper.IMessageSqlManager;
import com.jlm.happyselling.model.ViewImageInfo;
import com.jlm.happyselling.util.ECUtils;
import com.jlm.happyselling.util.FileAccessor;
import com.jlm.happyselling.util.LogUtil;
import com.jlm.happyselling.util.ToastUtil;
import com.jlm.happyselling.widget.HackyViewPager; import java.io.File;
import java.util.List; public class ImageGralleryPagerActivity extends ECSuperActivity implements View.OnClickListener { private static final String TAG = "ImageGralleryPagerActivity"; private static final String STATE_POSITION = "STATE_POSITION";
public static final String EXTRA_IMAGE_INDEX = "image_index";
public static final String EXTRA_IMAGE_URLS = "image_urls";
public static final String EXTRA_IMAGE_URLS_ID = "image_urls_id";
public static boolean isFireMsg = false; /**
*
*/
private boolean mFullscreen = true;
private HackyViewPager mPager;
private int pagerPosition;
private TextView indicator;
private List<ViewImageInfo> urls;
private List<String> imgs; @Override
protected int getLayoutId() {
return R.layout.image_grallery_container;
} @Override
protected boolean isEnableSwipe() {
// TODO Auto-generated method stub
return false;
} public static String sgId; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); getTopBarView().setTopBarToStatus(1, R.drawable.topbar_back_bt, -1, "1 / 1", this); if (!getIntent().hasExtra("imgs")) {
ImageGalleryFragment.i = 0;
pagerPosition = getIntent().getIntExtra(EXTRA_IMAGE_INDEX, 0);
urls = getIntent().getParcelableArrayListExtra(EXTRA_IMAGE_URLS);
sgId = getIntent().getStringExtra(EXTRA_IMAGE_URLS_ID);
onChatImgLayout();
} else {
ImageGalleryFragment2.i = 0;
pagerPosition = getIntent().getIntExtra(EXTRA_IMAGE_INDEX, 0);
imgs = getIntent().getStringArrayListExtra("imgs");
onImgLayout();
} // 更新下标
mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
} @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
} @Override
public void onPageSelected(int arg0) {
initIndicatorIndex(arg0);
} });
if (savedInstanceState != null) {
pagerPosition = savedInstanceState.getInt(STATE_POSITION);
} mPager.setCurrentItem(pagerPosition);
initIndicatorIndex(pagerPosition);
setTitleFooterVisible(true);
} private void onImgLayout() {
if (imgs == null || imgs.isEmpty()) {
finish();
return;
}
if (pagerPosition > imgs.size()) {
pagerPosition = 0;
}
setActionBarTitle(pagerPosition + "/" + (imgs != null ? imgs.size() : 0));
mPager = (HackyViewPager) findViewById(R.id.pager);
final ImagePagerAdapter1 adapter1 = new ImagePagerAdapter1(getSupportFragmentManager(),imgs);
mPager.setAdapter(adapter1);
indicator = (TextView) findViewById(R.id.indicator);
} private void onChatImgLayout() {
if (urls == null || urls.isEmpty()) {
finish();
return;
}
if (pagerPosition > urls.size()) {
pagerPosition = 0;
} setActionBarTitle(pagerPosition + "/" + (urls != null ? urls.size() : 0));
mPager = (HackyViewPager) findViewById(R.id.pager);
final ImagePagerAdapter mAdapter = new ImagePagerAdapter(getSupportFragmentManager(), urls);
mPager.setAdapter(mAdapter);
indicator = (TextView) findViewById(R.id.indicator);
findViewById(R.id.imagebrower_iv_save).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAdapter != null) {
ViewImageInfo viewImageInfo = urls.get(mPager.getCurrentItem());
if (viewImageInfo == null || !viewImageInfo.isDownload()) {
ToastUtil.show(R.string.save_img_waite_download);
return;
}
try {
File file = new File(FileAccessor.getImagePathName(), viewImageInfo.getPicurl());
if (viewImageInfo != null && viewImageInfo.isGif()) {
ECUtils.saveImage(file.getAbsolutePath(), ".gif");
return;
}
ECUtils.saveImage(file.getAbsolutePath());
} catch (Exception e) {
LogUtil.e(TAG, "onContextItemSelected error ");
} }
}
});
//待改 lu
if (mAdapter != null) {
ViewImageInfo viewImageInfoItem = urls.get(mPager.getCurrentItem());
if (viewImageInfoItem != null && IMessageSqlManager.isFireMsg(viewImageInfoItem.getMsgLocalId())) {
findViewById(R.id.imagebrower_iv_save).setVisibility(View.GONE);
} else {
findViewById(R.id.imagebrower_iv_save).setVisibility(View.GONE); } }
} private void initIndicatorIndex(int arg0) {
CharSequence text = getString(R.string.viewpager_indicator, arg0 + 1, mPager.getAdapter().getCount());
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(new RelativeSizeSpan(1.5F), 0, text.toString().indexOf("/"), SpannableString.SPAN_PRIORITY);
indicator.setText(spannableString);
} @Override
public void onClick(View v) {
mHandlerCallbck.sendEmptyMessageDelayed(1, 350L);
switch (v.getId()) {
case R.id.btn_left:
hideSoftKeyboard();
finish();
break; default:
break;
}
} @Override
protected void onDestroy() {
super.onDestroy();
if (urls != null) {
urls.clear();
urls = null;
}
if (mHandlerCallbck != null) {
mHandlerCallbck.removeCallbacksAndMessages(null);
}
mPager = null;
isFireMsg = false;
ImageGalleryFragment.i = 0;
System.gc(); } private final Handler mHandlerCallbck = new Handler() { @Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
mFullscreen = !mFullscreen;
setTitleFooterVisible(mFullscreen);
} }; @Override
public void onBaseContentViewAttach(View contentView) {
View activityLayoutView = getActivityLayoutView();
((ViewGroup) activityLayoutView.getParent()).removeView(activityLayoutView);
((ViewGroup) getWindow().getDecorView()).addView(activityLayoutView, 1); } /**
* @param request
*/
private void requestStatusbars(boolean request) {
if (request) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
return;
}
LogUtil.d(getClass().getSimpleName(), "request custom title");
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
} /**
* Full screen, hidden actionBar
*
* @param visible
*/
void setTitleFooterVisible(boolean visible) {
if (visible) {
requestStatusbars(false);
showTitleView();
return;
} requestStatusbars(true);
hideTitleView();
} @Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE_POSITION, mPager.getCurrentItem());
} private class ImagePagerAdapter extends FragmentStatePagerAdapter { public List<ViewImageInfo> fileList; public ImagePagerAdapter(FragmentManager fm, List<ViewImageInfo> fileList) {
super(fm);
this.fileList = fileList;
} @Override
public int getCount() {
return fileList == null ? 0 : fileList.size();
} @Override
public Fragment getItem(int position) {
ViewImageInfo url = fileList.get(position);
return ImageGalleryFragment.newInstance(url);
} } private class ImagePagerAdapter1 extends FragmentStatePagerAdapter { public List<String> fileList; public ImagePagerAdapter1(FragmentManager fm, List<String> fileList) {
super(fm);
this.fileList = fileList;
} @Override
public int getCount() {
return fileList == null ? 0 : fileList.size();
} @Override
public Fragment getItem(int position) {
String url = fileList.get(position);
return ImageGalleryFragment2.newInstance(url);
} } @Override
public boolean isEnableRightSlideGesture() {
return false;
}
}

3.布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="#ff171b19"> <com.jlm.happyselling.widget.HackyViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" /> <RelativeLayout
android:id="@+id/imagebrower_layout_pagelayout"
android:background="#5e171b19"
android:paddingLeft="15.0dip"
android:paddingRight="15.0dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="80.0dip"
android:layout_alignParentBottom="true"> <ImageView
android:id="@+id/imagebrower_iv_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" /> <TextView
android:textSize="18.0sp"
android:textColor="#ffcdcdcd"
android:id="@+id/indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
</RelativeLayout> </RelativeLayout>

点击查看大图Activity的更多相关文章

  1. vue项目 PC端点击查看大图

    今天,发现了一款还不错的插件来实现查看大图,成熟度也比较高,支持各种操作 原作品的github地址为 https://github.com/mirari/v-viewer 也有对应的中文文档,使用方法 ...

  2. 点击查看大图滑动预览(h5,pc通用)

    点击预览大图并滑动观看,支持手机端和pc端,具体功能如下图: 一. touchTouch 的js和css 以及jquery依赖库 <link rel="stylesheet" ...

  3. eazyui 或bootstrap table表格里插入图片,点击查看大图

    columns: [ {field: 'state',checkbox: true,align: 'center',valign: 'middle'}, {field: 'contacts',sort ...

  4. android开发:点击缩略图查看大图

    android中点击缩略图查看大图的方法一般有两种,一种是想新浪微博list页面那样,弹出一个窗口显示大图(原activity为背景).另一种就是直接打开一个新的activity显示大图. 1.第一种 ...

  5. [原创]WKWebview点击图片查看大图

    大家都知道,WKWebview是没有查看大图的属性或者方法的,所以只能通过js与之交互来实现这一功能,原理:通过js获取页面的图片,把它存放到数组,给图片添加点击事件,通过index显示大图就行了 其 ...

  6. jquery层居中,点击小图查看大图,弹出层居中代码,顶部层固定不动,滚动条滚动情况

    jquery层居中,点击小图查看大图,弹出层居中代码 http://www.cnblogs.com/simpledev/p/3566280.html 见第一版,发现一个情况,如果页面内容多出一屏的情况 ...

  7. WKWebview点击图片查看大图

    大家都知道,WKWebview是没有查看大图的属性或者方法的,所以只能通过js与之交互来实现这一功能,原理:通过js获取页面的图片,把它存放到数组,给图片添加点击事件,通过index显示大图就行了 其 ...

  8. 点击图片查看大图(纯js)

    $(function(){ $(".pimg").click(function(){ var _this = $(this);//将当前的pimg元素作为_this传入函数 img ...

  9. Android下QQ空间查看大图特效

    近期在做一个项目,里面有一个功能是实现Android QQ好友动态里面的缩略图放大,查看大图的效果.用过都知道,这个特效非常赞的,没用过的下载个玩玩吧.我刚開始以为放大的那个大图是一个Activity ...

随机推荐

  1. FFMPEG系列一:Mac下FFMPEG编译安装配置及使用例子

    系统环境:10.13以前系统版本,没有升级到macOS High Sierra.正常情况是直接输入brew install ffmpeg即可安装ffmpeg,但是该过程还是有一些坑需要填. 一.mac ...

  2. JavaScript 笔记总结

    一.js的简介  1.js是什么 js是可以嵌入到html中,是 基于对象 和 事件驱动 的 脚本语言 特点: (1)交互性 (2)安全性:js不能访问本地磁盘 (3)跨平台:浏览器中都具备js解析器 ...

  3. wsgiref手写一个web服务端

    ''' 通过wsgiref写一个web服务端先讲讲wsgiref吧,基于网络通信其根本就是基于socket,所以wsgiref同样也是通过对socket进行封装,避免写过多的代码,将一系列的操作封装成 ...

  4. 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

    今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...

  5. vim删除文件所有内容

    在命令模式下,输入:.,$d 回车.

  6. maven-聚合与继承

    1.聚合-方便快速构建项目 多个maven模块要构建需要分别执行一次maven构建命令,怎样只执行一次构建命令就构建多个maven模块呢?maven提供了聚合模块可以满足一次运行,构建多模块的要求 2 ...

  7. mysql计算排名

    mysql计算排名,获取行号rowno 学生成绩表数据 SELECT * FROM table_score ORDER BY score DESC; 获取某个学生成绩排名并计算该学生和上一名学生成绩差 ...

  8. Delphi方法重载

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  9. Excel VBA表格自行开发计划

    Excel VBA表格自行开发计划 要求功能 1. 批量删除 2. [X] 批量填充 3. [X] 批量重命名 4. [ ] 按颜色求和 5. [ ] 按底纹色选中单元格 6. [ ] 统计底纹颜色个 ...

  10. logger模块的使用

    logging模块 下面是logger模块的配置文件,在写程序需要记录日志可以直接拿过来用,但是要经过相应配置的一些修改. 对于如何使用,在我上一篇随笔<ATM程序规范练习>中的记录日志的 ...