今天用了下chrisbanes-PhotoView 第三方library,地址:https://github.com/chrisbanes/PhotoView/tree/master

Android studio注意导入library Modules的时候,要在最外层的build.gradle里面加上classpath ‘com.novoda:bintray-release:0.3.4’
比如这样:

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.3.0'        classpath 'com.novoda:bintray-release:0.3.4'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

可以去看上面的例子,也可以看下面的三个例子:

1、SimpleSample 基础案例

 .co.senab.photoview.PhotoView     android:layout_width="match_parent"     android:layout_height="0dp"     android:layout_weight="1"     android:id="@+id/pv"/>
public class SimpleActivity extends Activity {    private ImageView imageView;    private PhotoViewAttacher attacher;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_simple);        imageView = (ImageView) findViewById(R.id.pv);        imageView.setImageResource(R.drawable.wallpaper);        attacher = new PhotoViewAttacher(imageView);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main_menu, menu);        return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onPrepareOptionsMenu(Menu menu) {        MenuItem item = menu.findItem(R.id.menu_zoom_toggle);        if (item != null) {            item.setTitle(attacher.canZoom() ? "Disable Zoom" : "Enable Zoom");        }        return super.onPrepareOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.menu_zoom_toggle:                // 根据手势缩放                attacher.setZoomable(!attacher.canZoom());                break;            case R.id.menu_random:                // 缩放到随机比例                Random random = new Random();                float minScale = attacher.getMinimumScale();                float maxScale = attacher.getMaximumScale();                float randomScale = minScale + (random.nextFloat() * (maxScale - minScale));                attacher.setScale(randomScale, true);                break;        }        return super.onOptionsItemSelected(item);    }    @Override    protected void onDestroy() {        super.onDestroy();        attacher.cleanup();    }}

2、ViewPagerSample 滑动案例

public class ViewPagerActivity extends Activity {    private ViewPager mViewPager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_viewpager);        mViewPager = (ViewPager) findViewById(R.id.viewpager);        mViewPager.setAdapter(new SamplePagerAdapter());    }    static class SamplePagerAdapter extends PagerAdapter {        private static final int[] sDrawables = {R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper};        @Override        public Object instantiateItem(ViewGroup container, int position) {            PhotoView photoView = new PhotoView(container.getContext());            photoView.setImageResource(sDrawables[position]);            container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);            return photoView;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }        @Override        public int getCount() {            return sDrawables.length;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }    }}

3、RotationSample 图片旋转案例

public class RotationSampleActivity extends Activity {    private PhotoView photoView;    private final android.os.Handler handler = new android.os.Handler();    private boolean rotating = false;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_rotation);        photoView = (PhotoView) findViewById(R.id.pv);        photoView.setImageResource(R.drawable.wallpaper);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        menu.add(Menu.NONE, 0, Menu.NONE, "Rotate 10° Right");        menu.add(Menu.NONE, 1, Menu.NONE, "Rotate 10° Left");        menu.add(Menu.NONE, 2, Menu.NONE, "Toggle automatic rotation");        menu.add(Menu.NONE, 3, Menu.NONE, "Reset to 0");        menu.add(Menu.NONE, 4, Menu.NONE, "Reset to 90");        menu.add(Menu.NONE, 5, Menu.NONE, "Reset to 180");        menu.add(Menu.NONE, 6, Menu.NONE, "Reset to 270");        return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case 0:                photoView.setRotationBy(10);                return true;            case 1:                photoView.setRotationBy(-10);                return true;            case 2:                toggleRotation();                return true;            case 3:                photoView.setRotationTo(0);                return true;            case 4:                photoView.setRotationTo(90);                return true;            case 5:                photoView.setRotationTo(180);                return true;            case 6:                photoView.setRotationTo(270);                return true;        }        return super.onOptionsItemSelected(item);    }    private void toggleRotation() {        if (rotating) {            handler.removeCallbacksAndMessages(null);        } else {            rotateLoop();        }        rotating = !rotating;    }    private void rotateLoop() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                photoView.setRotationBy(1);                rotateLoop();            }        }, 15);    }}

更多相关文章

  1. Android(安卓)webview 常用配置
  2. Android(安卓)音乐播放器 完整案例分析
  3. Android模仿文件夹管理实例
  4. android 自定义控件之折线图自己写代码,不用jar包
  5. 安卓控件之图片控件(ImagView)
  6. Android(安卓)多个Activity之间的跳转 超级简单例子
  7. 用Eneter实现Android与.NET间通讯
  8. Android(安卓)NDK学习笔记3-入门案例篇
  9. [Google Android] Creating Your Own Spelling Checker Service

随机推荐

  1. Android Debug Bridge (adb)
  2. Android平板电脑使用评测
  3. 【转载】android开发新浪微博客户端 完整
  4. 动手学Android之三——第一个界面
  5. Android 开发之深入分析布局文件&又是“H
  6. 自己动手写android手机桌面-第一篇
  7. 一个使用openGL渲染的炫丽Android动画库
  8. 【Android】利用Java代码布局,按钮添加点
  9. 【Android】Broadcast Receiver的基本使
  10. java鏀诲煄鐙箣璺?Android绡?--widget_