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>

最新文章

  1. 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别
  2. NethServer 7.2 RC1,增加深度数据包检测
  3. .htaccess 语法以及应用
  4. 浅谈js中的数据类型,使用typeof获取js数据类型
  5. java反射机制(基础版)
  6. 【Linux/Ubuntu学习8】unbuntu 下播放swf文件
  7. C# 调用命令行,参数有空格
  8. Zookeeper核心机制
  9. HttpServerUtility类
  10. hdoj 1863 畅通工程
  11. 遍历 TextBox控件
  12. Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
  13. Framework7功能齐全的 iOS7 App 前端框架
  14. python之while循环/格式化输出/运算符/初始编码/成员变量
  15. 服务网关Zuul
  16. ORACLE表空间操作实例
  17. 【Python】os.path.isfile()的使用方法汇总
  18. TensoFlow的tf.reshape()
  19. python之模块csv之CSV文件的写入(基本结构)
  20. Fast and Accurate Traffic Matrix Measurement Using Adaptive Cardinality Counting

热门文章

  1. 重装系统后激活win10和office2016
  2. MySQL——用户与密码
  3. 关于mysql的优化
  4. linux命令之文件系统权限操作常用命令
  5. 05 shell编程之正则表达式
  6. lvs初体验
  7. 监听浏览器返回,pushState,popstate 事件,window.history对象
  8. php 操作RabbitMQ
  9. Dynamics 365-下载新版本的开发工具
  10. Elasticsearch 常用API