zoukankan      html  css  js  c++  java
  • android 利用Canvas显示局部图片

    package MyBitMap_1.code;

    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Rect;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.MotionEvent;
    import android.view.View;

    public class MyView extends View {
     
     private static int mScreenHeight;
     private static int mScreenWidth;
     private double fScale = 1.0;
     
     private int xOffset = 0;
     private int yOffset = 0;
     private int xDist = 0;
     private int yDist = 0;
     
     private int xOffset_T = 0;
     private int yOffset_T = 0;
     
     
     private Bitmap bitMap1;

     public MyView(Context context )
     {
      super(context);

      Initialize();
     }
     
     private void Initialize()
     {
      DisplayMetrics dm = getResources().getDisplayMetrics();
      mScreenWidth = dm.widthPixels;
      mScreenHeight = dm.heightPixels;
      
      Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.trail );
      bitMap1 = bmp;
      
      xDist = mScreenWidth;
      yDist = mScreenHeight;
     }
     
     @Override
     protected void onDraw(Canvas canvas )
     {
      canvas.drawColor(Color.WHITE);
      
      xDist = (int)(mScreenWidth);
      yDist = (int)(mScreenHeight);
        
      Rect src = new Rect((int)(xOffset*fScale),(int)(yOffset*fScale),(int)((xDist+xOffset)*fScale),(int)((yDist+yOffset)*fScale));
      
      Log.i("Rollrock","OnDraw" + xOffset + "  " + xDist );
      
      Rect dest = new Rect(0,0,mScreenWidth,mScreenHeight);
      
      canvas.drawBitmap(bitMap1, src,dest, null);
     }
     
     
     @Override
     public boolean onKeyDown(int keyCode , KeyEvent event )
     {
      Log.i("Rollrock", "" + keyCode + "  " + event.getAction() + " " + event.getKeyCode());
      
      if( KeyEvent.KEYCODE_DPAD_LEFT == keyCode )
      {
       
      }
      else if( KeyEvent.KEYCODE_DPAD_RIGHT == keyCode )
      {
       
      }
      else if( KeyEvent.KEYCODE_DPAD_UP == keyCode )
      {
       fScale += 0.1;
       this.invalidate();
      }
      else if( KeyEvent.KEYCODE_DPAD_DOWN == keyCode )
      {
       fScale -= 0.1;
       this.invalidate();
      }
      
      return super.onKeyDown(keyCode, event);
     }
     
     @Override
     public boolean onTouchEvent(MotionEvent event )
     {
      int action = event.getAction();
      int x = 0;
      int y = 0;
      
      switch(action)
      {
      case MotionEvent.ACTION_DOWN:
       xOffset_T = (int)event.getX();
       yOffset_T = (int)event.getY();
       break;
       
      case MotionEvent.ACTION_MOVE:
       break;
       
      case MotionEvent.ACTION_UP:
       x = (int)event.getX();
       y = (int)event.getY();
       
       xOffset += xOffset_T - x;
       yOffset += yOffset_T - y;
          
       this.invalidate();
       
       break;
      }
      
      return true;
     }
    }

  • 相关阅读:
    xhEditor入门基础
    【Scala-ML】使用Scala构建机器学习工作流
    POJ 2482 Stars in Your Window(线段树)
    Xcode6 UIWebView与JavaScript交互(issue fix)
    poj1159--Palindrome(dp:最长公共子序列变形 + 滚动数组)
    把握linux内核设计思想(十二):内存管理之slab分配器
    Andriod DiskLruCache的使用案例
    Lambda 表达式的演示样例-来源(MSDN)
    HDU 4857 topological_sort
    Thinking in React(翻译)
  • 原文地址:https://www.cnblogs.com/rollrock/p/2377614.html
Copyright © 2011-2022 走看看