本人被这个问题折磨一天了,求教各位大神。
“左右滑动查看图片”不是查看多张图片,而是查看一张大图,具体效果是一张分辨率很高的图片刚开始时页面只能显示图片的一部分,用户左右滑动界面能够查看尚未显示的图片部分。
上网查了好久,发现上面大多是一些viewpager方面的东西,不需要查看多张图片的例子,谢谢
求大神指点呐

解决方案 »

  1.   


    http://zhixinzhinian.blog.163.com/blog/static/19952332720126303243724/
      

  2.   

    使用Matrix矩阵变化可以实现效果
      

  3.   

    public class EX07_19 extends Activity
    {
      private ImageView image1;
      private Bitmap bm;
      private int bmWidth=0;
      private int bmHeight=0;
      private int width=0;
      private int height=0;
      private int pointX=0;
      private int pointY=0;
      private GestureDetector detector;
      private myGestureListener gListener;
      
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        /* 隐藏状态栏 */
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
        /* 隐藏标题栏 */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /* 载丈main.xml Layout */
        setContentView(R.layout.main);
        /* 取得屏幕宽高 */    
        width=this.getWindowManager().getDefaultDisplay().getWidth();
        height=this.getWindowManager().getDefaultDisplay().getHeight();   
        /* Bitmap设定 */
        bm=BitmapFactory.decodeResource(getResources(),R.drawable.photo);
        bmWidth=bm.getWidth();
        bmHeight=bm.getHeight();
        /* ImageView初始化 */
        image1=(ImageView)findViewById(R.id.image1);
        Bitmap newB=Bitmap.createBitmap(bm,pointX,pointY, width, height);
        image1.setImageBitmap(newB);
        /* GestureDetector设置 */
        gListener = new myGestureListener();
        detector = new GestureDetector(EX07_19.this,gListener);
      }
      /* 当Activity的onTouchEvent()被触发时,
       * 触发GestureDetector的onTouchEvent() */
      @Override
      public boolean onTouchEvent(MotionEvent event)
      {
        if (detector.onTouchEvent(event))
        {
          return detector.onTouchEvent(event);
        }  
        else
        {
          return super.onTouchEvent(event);
        }
      }
      
      /* 自定义GestureListener类 */
      public class myGestureListener implements GestureDetector.OnGestureListener
      {
        /* 手指在屏幕上拖拉时触发此method */
        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2,
                                float distanceX,  float distanceY)
        {
          /* 计算X轴基准点移动后的吵置 */
          if(pointX+distanceX>=0){
            if((pointX+distanceX)>(bmWidth-width)){  
              pointX=bmWidth-width;
            }else{
              pointX+=distanceX;
            }
          }else{
            pointX=0;
          }
          /* 计算Y轴基准点移动后的吵置 */
          if(pointY+distanceY>=0){  
            if((pointY+distanceY)>(bmHeight-height)){  
              pointY=bmHeight-height;
            }else{
              pointY+=distanceY;
            }
          }else{
            pointY=0;
          }
          /* 如果有移动,则更新Bitmap设定 */
          if(distanceX!=0&&distanceY!=0)
          {
            Bitmap newB=Bitmap.createBitmap(bm,pointX,pointY,width,height);
            image1.setImageBitmap(newB);
          }
          return false;
        }    @Override
        public boolean onDown(MotionEvent arg0)
        {
          return false;
        }    @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2,
            float velocityX, float velocityY)
        {
          return false;
        }    @Override
        public void onLongPress(MotionEvent e)
        {
        }    @Override
        public void onShowPress(MotionEvent e)
        {
        }    @Override
        public boolean onSingleTapUp(MotionEvent e)
        {
          return false;
        }
      }
    }
      

  4.   

    1楼的链接很好 重点是matrix这个变量。