您的位置:首页 > 其它

一组图片的放大缩小+轮播

2017-08-24 20:00 288 查看
在MainActivity中写一个button监听:
public class MainActivity extends AppCompatActivity{
//创建一个集合装图片
private List<String> urls=new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void button1(View view){ //监听
//添加图片
urls.add("http://pic4.nipic.com/20091117/3376018_110331702620_2.jpg");
urls.add("http://img1.imgtn.bdimg.com/it/u=3028702483,4182396631&fm=214&gp=0.jpg");
urls.add("http://pic.58pic.com/58pic/11/19/16/73N58PICwxg.jpg");
//MyDialog页面进入
new MyDialog(this,urls).show();
}

}
//创建MyDialog类
public  class MyDialog extends Dialog{//继承Dialogprivate Activity context;private List<String> urls;public MyDialog(@NonNull Activity context, List<String> urls) {super(context,R.style.dialog_theme);//在styles里写入dialog_themethis.context=context;this.urls=urls;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dialog_layout);//创建dialog_layout布局WindowManager windowManager = context.getWindowManager();DisplayMetrics displayMetrics = new DisplayMetrics();windowManager.getDefaultDisplay().getMetrics(displayMetrics);int widthPixels = displayMetrics.widthPixels;int heightPixels = displayMetrics.heightPixels;Window window = getWindow();WindowManager.LayoutParams attributes = window.getAttributes();attributes.x=0;attributes.y=0;attributes.width=widthPixels;attributes.height=heightPixels;window.setAttributes(attributes);ViewPager myViewpager = (ViewPager) findViewById(R.id.myviewpager);final TextView tvTitle = (TextView) findViewById(R.id.tvTitle);MyViewpagerAdapter myViewpagerAdapter = new MyViewpagerAdapter(context, urls);myViewpager.setAdapter(myViewpagerAdapter);tvTitle.setText("1/"+urls.size());myViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {tvTitle.setText(position+1+"/"+urls.size());}@Overridepublic void onPageScrollStateChanged(int state) {}});}}
在styles.xml添加:
<style name="dialog_theme" parent="@android:style/Theme.Dialog"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style>
在color.xml中写入:
<color name="colorBlack">#000000</color><color name="transparent">#00000000</color>
创建MyViewpager类,用来避免冲突:
public class MyViewpager extends ViewPager {public MyViewpager(Context context) {super(context);}public MyViewpager(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {try {return super.onInterceptTouchEvent(ev);} catch (Exception e) {e.printStackTrace();return false;}}}
//dialog_layout.xml中的布局:
<android.support.v4.view.ViewPagerandroid:id="@+id/myviewpager"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v4.view.ViewPager><TextViewandroid:id="@+id/tvTitle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_alignParentBottom="true"android:layout_marginBottom="20dp"/>
//创建MyViewPagerAdapter类:
public  class MyViewpagerAdapter extends PagerAdapter{private Context context;private List<String> urls;private ImageLoader imageLoader;private DisplayImageOptions options;public MyViewpagerAdapter(Context context, List<String> urls){this.context=context;this.urls=urls;}@Overridepublic int getCount() {return urls.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {return view==object;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {PhotoView photoView = new PhotoView(context);imageLoader = ImageLoader.getInstance();File file= new File(Environment.getExternalStorageDirectory(),"Bwei");if(!file.exists())file.mkdirs();ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context).diskCache(new UnlimitedDiskCache(file)).build();imageLoader.init(configuration);options = new DisplayImageOptions.Builder().showImageOnLoading(R.mipmap.ic_launcher).cacheOnDisk(true).build();ImageLoader.getInstance().displayImage(urls.get(position),photoView,options);container.addView(photoView);return photoView;}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: