您的位置:首页 > 其它

点击新闻条目跳转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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐