点击新闻条目跳转viewpager+photoview显示图片
2017-08-24 19:56
363 查看
//点击xlistview的条目传递图片 xlv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //创建一个用来装图片的集合 ArrayList<String> imgList = new ArrayList<String>(); imgList.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1503505099622&di=87cd46cf53b01a5f55e6e56c07ae27ea&imgtype=0&src=http%3A%2F%2Fimg5.duitang.com%2Fuploads%2Fitem%2F201410%2F24%2F20141024112929_xwF2H.thumb.700_0.jpeg"); imgList.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1503505098047&di=9b69ff36b72c3d41639fa9056dc49a8b&imgtype=0&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201411%2F13%2F20141113135516_8sMsV.thumb.700_0.jpeg"); imgList.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1503505098155&di=889481f9e86eaf7d1d492cd60d0da6dc&imgtype=0&src=http%3A%2F%2Fimg.kumi.cn%2Fphoto%2F52%2F21%2Fd5%2F5221d5deb23b0d3e.jpg"); //往dialog类传递过去 new MyDialog(getContext(), imgList).show(); } });
点击新闻条目跳转页面,其实就是弹出一个Dialog
public class MyDialog extends Dialog { //创建一个存图片地址的集合 private ArrayList<String> urlList; //创建一个用来显示页数的控件 private TextView tv_dialog; //创建一个viewpager控件 private ViewPager viewpager_dialog; //创建一个用来存photoview的集合 private ArrayList<View> views; //调用控件 private View view; //定义有参构造 public MyDialog(@NonNull Context context, ArrayList<String> urlList) { super(context, R.style.transparentBgDialog); this.urlList = urlList; //初始化控件 initView(context); //初始化数据 initData(context, urlList); } //找到控件的方法 private void initView(Context context) { view = View.inflate(context, R.layout.activity_dialog, null); tv_dialog = (TextView) view.findViewById(R.id.tv_dialog); viewpager_dialog = (ViewPager) view.findViewById(R.id.viewpager_dialog); } //设定数据的方法 private void initData(Context context, final ArrayList<String> urlList) { //这里把photoview放入集合 views = new ArrayList<>(); //根据滑动的页数来改变 tv_dialog.setText("1/" + urlList.size()); //循环的吧photoview放入集合用xutils来显示图片 for (int i = 0; i < urlList.size(); i++) { System.out.println("========================" + urlList.get(i)); final PhotoView photoView = new PhotoView(context); x.image().bind(photoView, urlList.get(i)); //设置监听 photoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击别处让photoview消失 dismiss(); } }); //添加 views.add(photoView); } MyPagerAdapter myPagerAdapter = new MyPagerAdapter(context, views); //设置适配器 viewpager_dialog.setAdapter(myPagerAdapter); //设置监听 viewpager_dialog.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //页数 tv_dialog.setText(position + 1 + "/" + urlList.size()); } @Override public void onPageScrollStateChanged(int state) { } }); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //隐藏窗口 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(view); //设置全屏 Window window = getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.x = 0; layoutParams.y = 0; DisplayMetrics metrics = new DisplayMetrics(); try { // 因为dialog是依附在activity上的需要强转一下 Activity activity = (Activity) getContext(); //得到管理权 WindowManager manager = activity.getWindowManager(); manager.getDefaultDisplay().getMetrics(metrics); //设置全屏 layoutParams.width = metrics.widthPixels; layoutParams.height = metrics.heightPixels; //放入 window.setAttributes(layoutParams); } catch (Exception e) { e.printStackTrace(); } } }
//给viewpager设置适配器 public class MyPagerAdapter extends PagerAdapter{ private Context context; private ArrayList<View> list; public MyPagerAdapter(Context context, ArrayList<View> list) { this.context = context; this.list = list; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(list.get(position)); return list.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public int getCount() { return list==null?0:list.size(); } @Override 4000 public boolean isViewFromObject(View view, Object object) { return view==object; } }
在values colors设置颜色
<color name="transparent">#00000000</color><color name="black">#000000</color>
在styles 设置
<!--全屏背景半透明 dialog--><style name="transparentBgDialog" parent="@android:style/Theme.Dialog"><item name="android:windowIsTranslucent">true</item><item name="android:background">@color/transparent</item><item name="android:windowBackground">@color/black</item><item name="android:backgroundDimEnabled">true</item><item name="android:windowNoTitle">true</item></style>
相关文章推荐
- 自定义ViewPager,广告条目可点击和广告图片宽高自适应。
- [置顶] 简述如何嵌套使用Viewpager,点击图片放大查看图片,并且使用PhotoView进行图片处理
- ViewPager广告中的图片请求自网络,监听跳转至点击图片对应Url的webView
- 用RecyclerView实现新闻列表页,包括头部的图片轮播,两种Item显示方式,下拉刷新和上拉加载以及限制列表的加载条目数
- RecyclerView + 九宫格图片 + ViewPager + PhotoView 实现列表图片点击放大并能缩放思路
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- ImageView+ViewPager+PhotoView实现朋友圈图片点击全屏查看支持放大缩小
- TabLayout新闻列表和SlidingMenu侧拉菜单ListView点击Item跳转到主界面ViewPager对应页面
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- viewpager+handler获取网络数据无限自动轮播,xlistview添加头部viewpager,点击条目跳转百度
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- Android 在ViewPager中使用的可以画线,放大,保存,点击删除线条的自定义图片显示控件
- ViewPager:真正实现图片的无限轮播、自定义指示点和条目点击事件(支持长按暂停滚动)
- 点击recyclerview的某个条目,跳转到其他界面获取值,再返回之前的条目中将该值显示在条目的控件上
- recyclerview 显示图片 glide加载图片 实现点击跳转 上拉刷新下拉加载
- Android中图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- 响应鼠标点击的代码实现了在单独线程中下载图片并在ImageView显示
- Recyclerview显示数据+GreenDao数据库+跳转传值(图片圆)+MVP
- viewpager从本地显示图片并可滑动
- Android开发UI之textview实现高亮显示并点击跳转