实现将一个存放图片的集合赋值到Photoview中,并用Viewpager展示出来
来源:互联网 发布:歌曲变成伴奏软件 编辑:程序博客网 时间:2024/06/14 17:00
实现将一个存放图片的集合赋值到Photoview中,并用Viewpager展示出来
MainActivity类
public class MainActivity extends AppCompatActivity { private List<String> url=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); TextView textView = (TextView) findViewById(R.id.tvIntent); url.add("http://7xi8d6.com1.z0.glb.clouddn.com/2017-05-05-18251898_1013302395468665_8734429858911748096_n.jpg"); url.add("http://7xi8d6.com1.z0.glb.clouddn.com/2017-05-04-18299181_1306649979420798_1108869403736276992_n.jpg"); url.add("http://ww1.sinaimg.cn/large/61e74233ly1feuogwvg27j20p00zkqe7.jpg"); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳转到大图页面 new MyDialog(MainActivity.this,url).show(); } }); }
自定义的一个viewpager类(为了避免viewpager与photoview的滑动冲突)
public class MyViewpager extends ViewPager { public MyViewpager(Context context) { super(context); } public MyViewpager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { //为了避免viewpager与photoview的滑动冲突 try { return super.onInterceptTouchEvent(ev); } catch (Exception e) { e.printStackTrace(); return false; } }}
Dialog类
public class MyDialog extends Dialog { private List<String> url; private Activity context; public MyDialog(@NonNull Activity context, List<String> url) { //调用系统构造方法,给dialog设置style样式 super(context,R.style.dialog_theme); this.url=url; this.context=context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_layout); //拿屏幕的宽高,只有activity有getWindowManager这个方法,所有我们要强转成activity, // dialog是挂载到activity上的,直接getContext就是他的activity WindowManager windowManager = context.getWindowManager(); DisplayMetrics displayMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics); int widthPixels = displayMetrics.widthPixels; int heightPixels = displayMetrics.heightPixels; //设置diaolog为全屏 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 myViewpager = (MyViewpager) findViewById(R.id.myViewpager); final TextView tvTitle = (TextView) findViewById(R.id.tvTitle); MyViewpagerAdapter myViewpagerAdapter = new MyViewpagerAdapter(getContext(),url); myViewpager.setAdapter(myViewpagerAdapter); tvTitle.setText("1/"+url.size()); myViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { tvTitle.setText(position+1+"/"+url.size()); } @Override public void onPageScrollStateChanged(int state) { } }); }}
style样式类
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="dialog_theme" parent="@android:style/Theme.Dialog"> <!-- Customize your theme here. --> <item name="android:windowBackground">@color/transparent</item> <item name="android:background">@color/black</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowIsTranslucent">true</item> </style></resources>
colors样式类
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> <color name="black">#000000</color> <color name="transparent">#00000000</color></resources>
Application类(该类需在清单文件的application标签下声明一下)
<application android:name=".app.MyApplication"></application>
该类为了配置Imageloader的全局配置
imageloader依赖了
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); initImageLoader(this); } public static void initImageLoader(Context context){ String path = Environment.getExternalStorageDirectory() + "/" + "Image"; File file = new File(path); //File cacheDir= StorageUtils.getOwnCacheDirectory(context,"universalimageloader/Cache"); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(100, 100)//配置内存缓存图片的尺寸 .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小 例如 : 2* 1024 * 1024 = 2MB .threadPoolSize(3)//配置加载图片的线程数 .threadPriority(1000)//配置线程的优先级 .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径 .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字 .diskCacheFileCount(20)//配置sdcard缓存文件的数量 .writeDebugLogs() //打印加载图片的log日志,跟据自己的需求配置 .build();//配置构建完成 ImageLoader.getInstance().init(configuration); }}
MyViewpagerAdapter类(设置布局显示)
其中PhotoView依赖了
compile 'com.github.chrisbanes.photoview:library:+'
public class MyViewpagerAdapter extends PagerAdapter { private Context context; private List<String> url; public MyViewpagerAdapter(Context context, List<String> url){ this.context=context; this.url=url; } @Override public int getCount() { return url.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { PhotoView photoView = new PhotoView(context); ImageLoader.getInstance().displayImage(url.get(position),photoView); container.addView(photoView); return photoView; }}
阅读全文
0 0
- 实现将一个存放图片的集合赋值到Photoview中,并用Viewpager展示出来
- Android中通过Exif-ExifInterface获取图片的相关信息,并且在图片上添加获取到的信息将图片展示出来
- android:viewpager+photoview实现图片查看器
- 点击item将图片用Dialog以Viewpager形式展示出来,并放大缩小
- 添加一个对象到集合中时,集合里面存放的是对象的引用
- 简单的viewPager和PhotoView的实现
- 使用Android ViewPager与PhotoView实现图片滑动查看
- 一个将图片展示到手机屏幕,并让其不停的浮动的效果
- viewPager+photoView实现网络图片加载左右滑动+手势缩放功能+滑动到下一页其他页面恢复默认大小
- 将一个list的值存放到另一个list中去
- viewPager+photoView实现图片轮播和手势缩放功能,并且实现滑动到下一页后上一页缩放的图片会恢复到之前的默认状态(下)
- sql 将一个表中的查询出来的数据更新到另外一个表中
- Android之使用ViewPager实现图片展示(最简单的)
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- Android利用Picasso+PhotoView+ViewPager的图片浏览器
- JavaScript能将页面中的图片导出到excel中吗?!!!!!(截出来的)
- 上不了网/能上qq微信不能上网页的解决方案(不一定成功,但可以试一下)
- 杭电 2037 今年暑假不AC(606比赛选拔 2017-08-20)(1004)
- Python--matplotlib绘图可视化知识点整理
- Java虚拟机
- darknet yolo源码解读
- 实现将一个存放图片的集合赋值到Photoview中,并用Viewpager展示出来
- Eclipse下开发sap项目中i18n.properties文件编译显示中文
- 访问控制的原因
- Spring Boot:安装命令行界面Spring boot CLI
- SSIS缓慢变化维理解及简单操作
- C语言入门第九篇,循环语句
- MD5,RSA与springCode的加解密方法
- JS apply/call/bind 及 实用技巧
- 深入理解Java:注解(Annotation)--注解处理器