PhotoView之基础用法详解

来源:互联网 发布:js中的slice方法 编辑:程序博客网 时间:2024/06/08 14:14

转载自:http://blog.csdn.net/fingerth/article/details/50477112

项目地址:https://github.com/chrisbanes/PhotoView

原理剖析文档:http://a.codekk.com/detail/Android/dkmeteor/PhotoView%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
Demo地址:https://raw.githubusercontent.com/android-cn/android-open-project-demo/master/photoview-demo/app/photoview-demo.apk


Demo中PhotoView的用法。用法比较简单,直接代码解释。
1.FullScreenDemo 
java代码
[java] view plain copy
  1. import uk.co.senab.photoview.PhotoView;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4.   
  5.   
  6. public class FullScreenDemo extends Activity {  
  7.     private PhotoView mPhotoView;  
  8.   
  9.   
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.activity_fullscreen);  
  14.         mPhotoView = (PhotoView) findViewById(R.id.photoview);  
  15.         mPhotoView.setImageResource(R.drawable.saya);  
  16.                   
  17.     }  
  18. }  

xml文件
[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:orientation="vertical" >  
  5.   
  6.   
  7.     <uk.co.senab.photoview.PhotoView  
  8.         android:id="@+id/photoview"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent" />  
  11.   
  12. </LinearLayout>  


2.ViewPagerDemo

Java代码

[java] view plain copy
  1. import uk.co.senab.photoview.PhotoView;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.support.v4.view.PagerAdapter;  
  5. import android.support.v4.view.ViewPager;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.view.ViewGroup.LayoutParams;  
  9.   
  10.   
  11. public class ViewPagerDemo extends Activity {  
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.activity_viewpager);  
  16.         ViewPager pager = (ViewPager) findViewById(R.id.viewpager);  
  17.         pager.setAdapter(new DemoAdapter());  
  18.     }  
  19.   
  20.   
  21.     class DemoAdapter extends PagerAdapter {  
  22.   
  23.   
  24.         @Override  
  25.         public int getCount() {  
  26.             return 3;  
  27.         }  
  28.   
  29.   
  30.         @Override  
  31.         public void destroyItem(ViewGroup container, int position, Object object) {  
  32.             container.removeView((View) object);  
  33.         }  
  34.   
  35.   
  36.         @Override  
  37.         public boolean isViewFromObject(View view, Object object) {  
  38.             return view == object;  
  39.         }  
  40.   
  41.   
  42.         @Override  
  43.         public Object instantiateItem(ViewGroup container, int position) {  
  44.             PhotoView photoview = new PhotoView(ViewPagerDemo.this);  
  45.             photoview.setImageResource(R.drawable.saya);  
  46.             container.addView(photoview, LayoutParams.MATCH_PARENT,  
  47.                     LayoutParams.MATCH_PARENT);  
  48.             return photoview;  
  49.         }  
  50.   
  51.   
  52.     }  
  53. }  


xml文件
[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:orientation="vertical" >  
  5.   
  6.   
  7.     <android.support.v4.view.ViewPager  
  8.         android:id="@+id/viewpager"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent" />  
  11.   
  12. </LinearLayout>  

3.ImageLoaderDemo
java代码
[java] view plain copy
  1. import com.nostra13.universalimageloader.core.ImageLoader;  
  2. import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;  
  3.   
  4.   
  5. import uk.co.senab.photoview.PhotoView;  
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8.   
  9.   
  10. public class ImageLoaderDemo extends Activity {  
  11.   
  12.   
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_integration);  
  17.         PhotoView photoView = (PhotoView) findViewById(R.id.photoview);  
  18.   
  19.   
  20.         ImageLoader.getInstance().init(  
  21.                 ImageLoaderConfiguration.createDefault(this));  
  22.   
  23.   
  24.         /** 
  25.          * The Image URL is comes from my space. If it is invalid, you can 
  26.          * change to any other picture url. 
  27.          */  
  28.         ImageLoader.getInstance().displayImage(  
  29.                 "http://img5.imgtn.bdimg.com/it/u=854933491,3774339278&fm=21&gp=0.jpg", photoView);  
  30.     }  
  31. }  

xml文件

[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:orientation="vertical" >  
  5.   
  6.   
  7.     <uk.co.senab.photoview.PhotoView  
  8.         android:id="@+id/photoview"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent" />  
  11.   
  12.   
  13. </LinearLayout>  

4.PicassoDemo
java代码
[java] view plain copy
  1. import uk.co.senab.photoview.PhotoView;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.util.DisplayMetrics;  
  5.   
  6.   
  7. import com.squareup.picasso.Picasso;  
  8.   
  9.   
  10. public class PicassoDemo extends Activity {  
  11.   
  12.   
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_integration);  
  17.         PhotoView photoView = (PhotoView) findViewById(R.id.photoview);  
  18.   
  19.   
  20.         DisplayMetrics dm = new DisplayMetrics();  
  21.         getWindowManager().getDefaultDisplay().getMetrics(dm);  
  22.   
  23.   
  24.         Picasso.with(this).load("http://img5.imgtn.bdimg.com/it/u=854933491,3774339278&fm=21&gp=0.jpg")  
  25.                 .centerInside().resize(dm.widthPixels, dm.heightPixels).tag(this).into(photoView);  
  26.     }  
  27. }  

xml文件

[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:orientation="vertical" >  
  5.   
  6.   
  7.     <uk.co.senab.photoview.PhotoView  
  8.         android:id="@+id/photoview"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent" />  
  11.   
  12.   
  13. </LinearLayout>