朋友圈一个简单的看图功能

原创 2016年05月30日 16:41:25

       最近做项目的时候有大图片,需要查看,怎么解决?

我想的是在一个页面里边使用一个ImageView就可以了,如果需要实现左右滑动的功能就监听一下滑动监听事件。嗯嗯,既然这么想了那就去做吧!

首先在页面中添加一个Imageview,然后监听屏幕的滑动事件(代码比较简单,贴出部分代码):

float x1;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 拿到按下时的坐标
x1 = (int) event.getX();
break;
case MotionEvent.ACTION_UP:
// 拿到抬起的坐标
float moveX = x1 - event.getX();
// 左滑
if (moveX > 50) {
// 左边滑动-->判断当前图片在数组中的位置
if (index < LSharepicArr.length) {
index++;
myAdapter.notifyDataSetChanged();
} else {
T.shortToast(getApplicationContext(), "当前是最后一张图片");
}
}
// 右滑
else if (moveX < -50) {
// 右边滑动-->判断当前图片在数组中的位置
if (index > -1) {
index--;
myAdapter.notifyDataSetChanged();
} else {
T.shortToast(getApplicationContext(), "当前是第一张图片");
}
}
break;
}
return false;
}

运行一下,效果如下:



但是,理想很丰满,显示很骨感。在滑动的时候发现图片就在一瞬间就切换了,根本不给我这种反应慢的人留下思考的事件。唉,所以是不是应该考虑加点动画呢?但是好像又有点麻烦,还是用ViewPager来实现吧!

这个的实现思路也很简单:

1、首先我需要知道我应该创建多少个view,

2、然后再在view里边加一个imageview,所以就需要一个item布局。

3、在加载视图的时候把图片加到imageview里边。

实现起来也很简单,这里就不贴图片了。但是又有新的问题来了,我每次点击图片看大图的时候都是从第一张图片开始看,这很不爽啊!怎么解决?
让我传一个index进去,但是发现总是显示一张图片。然后就开始查viewpager的左右滑动的监听!发现无果,各种请教之后,发现viewPager还有一个setCurrentItem方法!

这个方法有啥作用呢?就是告诉viewpager我要把那个view放在第一张显示,然后其他的左右滑动的操作就不用自己来控制了,viewpager会当你实现的!谢谢爱调频的大叔的帮助!

效果图还和上边一样,具体代码如下:

public class ShejiaoShareShowPicActivity extends Activity {
int index;// 当前图片在数组中的位置
String LSharepicArr[];// 存放图片地址的数组
String LShareSmallPicArr[];// 存放缩略图的数组
private ViewPager pager;
String path = "";// 图片缓存地址
private ArrayList<View> myViews = new ArrayList<View>();
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_shejiao_share_show_pic);
initView();
initDate();
path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/Qm";
}

private void initView() {
pager=(ViewPager)  this.findViewById(R.id.shejiao_share_showpic_img);
index = PublicStaticData.shejiaoShareLSharepicposition;// 当前选中的对象图片的位置
// 截取图片地址
LSharepicArr = PublicStaticData.shejiaoShareLSharepic.split(",");
LShareSmallPicArr = PublicStaticData.shejiaoShareLShareSmallPic
.split(",");
}
// 加载数据 
public void initDate() {
for (int i = 0; i < LSharepicArr.length; i++) {
View view =LayoutInflater.from(ShejiaoShareShowPicActivity.this).inflate(R.layout.shejiao_share_showpic_item,null); 
myViews.add(view);
}
myAdapter = new MyAdapter(myViews,LSharepicArr);
pager.setAdapter(myAdapter);
pager.setCurrentItem(index);
}


class MyAdapter extends PagerAdapter {
private ArrayList<View> myviews;
private String myLSharepicArr[];
public MyAdapter(ArrayList<View> views,String myLSharepicArr[]) {
super();
this.myviews = views;
this.myLSharepicArr = myLSharepicArr;
}
@Override
public int getCount() {
return myviews.size();
}
// 实例化选项卡
@Override
public Object instantiateItem(final ViewGroup container, int position) {
View myview = myviews.get(position);
ImageView imgImageView=(ImageView) myview.findViewById(R.id.asd_pic);
BitmapUtils bitmapUtils = new BitmapUtils(ShejiaoShareShowPicActivity.this, path);
bitmapUtils.display(imgImageView, myLSharepicArr[position]);
container.addView(myview);
return myview;
}
// 删除选项卡
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(myviews.get(position));
}
// 判断当前视图是否为返回的对象
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

简单的朋友圈界面-Android(二)

接着上一篇 http://blog.csdn.net/zhczyx/article/details/51706071 在上一篇中,编写了一个简单的朋友圈界面,只支持文字,没有任何功能反馈。而在本文中...
  • zhczyx
  • zhczyx
  • 2016年07月19日 16:21
  • 746

Android仿微信朋友圈发动态功能(相册图片多选)

DEMO一共13个类 大约2000行代码,童鞋们耐心点看基本思路是: 1,首先从Thumbnails中把略缩图地址拿出来用GridView显示出来 2,如果没有该略缩图就找到原图地址在线程中生成略...
  • ThunderRong
  • ThunderRong
  • 2016年08月18日 09:20
  • 4009

如何在App中实现朋友圈功能之一朋友圈实现原理浅析——箭扣科技Arrownock

如何在App中实现朋友圈功能 之一 朋友圈实现原理浅析   微信朋友圈、新浪微博、知乎等知名朋友圈类型功能,大家有没有想过其实现的逻辑呢? 本文以微信朋友圈功能为例,解析实现逻辑。   朋友圈的结构:...
  • nigelxuxuxu
  • nigelxuxuxu
  • 2015年09月21日 13:49
  • 1817

Android中实现微信本地视频发布到朋友圈功能

编码美丽 2016-11-14 17:49 一、前言 前一篇文章已经详细介绍了如何使用Xposed框架编写第一个微信插件:摇骰子和猜拳作弊 本文继续来介绍如何使用Xposed框架编写第二个...
  • u011277123
  • u011277123
  • 2016年11月16日 09:33
  • 3214

用Visual Basic轻松实现看图软件

  一、 前言  在日常的工作或学习中,像一些常用的工具是必不可少的。比如ACDsee,WinRAR等等。其实在VB中就可以很容易地实现像ACDsee这样的一些基本看图功能,用着自己编写的看图软件,感...
  • jevylau
  • jevylau
  • 2007年02月25日 10:40
  • 618

php写的微信朋友圈

初学php,代码还应该重构,放一个纪念一下吧 源码
  • a1610770854
  • a1610770854
  • 2016年06月18日 15:06
  • 1277

JSP+JavaBean编写一个计算器

Java: Jsp:
  • like7xiaoben
  • like7xiaoben
  • 2011年11月06日 16:41
  • 1699

Smobiler实现类似朋友圈功能—MicroBlog控件(开发日志十七)

近两年来玩微信的亲们越来越多,有没有对微信朋友圈的功能很感兴趣了,大家跟我一起做一个微信朋友圈的功能吧! 步骤一:拖入一个MicroBlog控件到窗体中,如图 拖入MicroBlog控...
  • Rabbit199077
  • Rabbit199077
  • 2016年04月07日 11:13
  • 980

JavaBean编写一个计算器

Java: Jsp:
  • WangMan_512
  • WangMan_512
  • 2011年11月07日 21:19
  • 1008

一个简单类似朋友圈头像背景的代码

- (void)addBackGroundView { _scrollView = [[UIScrollView alloc] initWithFrame:self.tableView.bou...
  • huangtianyouhehuangg
  • huangtianyouhehuangg
  • 2015年02月11日 11:58
  • 639
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:朋友圈一个简单的看图功能
举报原因:
原因补充:

(最多只允许输入30个字)