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;
     }
    }

  • 相关阅读:
    HDU 1816, POJ 2723 Get Luffy Out(2-sat)
    [Transducer] Make an Into Helper to Remove Boilerplate and Simplify our Transduce API
    [ML] Daily Portfolio Statistics
    [Javascript] Transduce over any Iteratable Collection
    [Javascript] Improve Composition with the Compose Combinator
    [Mobx] Using mobx to isolate a React component state
    [Javascript] Simplify Creating Immutable Data Trees With Immer
    [React Native] Dismiss the Keyboard in React Native
    [CSSinJS] Convert Sass (SCSS) Styled Button to CSSinJS with JavaScript Templates and Variables
    [React Native] Use the SafeAreaView Component in React Native for iPhone X Compatibility
  • 原文地址:https://www.cnblogs.com/rollrock/p/2377614.html
Copyright © 2011-2022 走看看