package com.test; import android.R.integer; import android.app.Activity; import android.content.Co

package com.test;


import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;


public class MoveDemoActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(new Draw(this));
    }
    
    
//    the Canvas to Draw
    class Draw extends View
    {	
    	Bmp bmp[];
//    	construct
    	public Draw(Context context)
    	{
    		
    		super(context);
        	bmp = new Bmp[4]; 
        	{
                
                for(int i = 0; i < 4; i++)
                {
                	bmp[i] = new Bmp(BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.test)), i, i * 50f, i * 60f);
                }
        	}
    		this.pic = bmp;
    	}


//    	construct
    	public Draw(Context context, Bmp[] pic)
    	{
    		this(context);
    		this.pic = pic;
    	}
    	
    	@Override
    	public void onDraw(Canvas canvas)
    	{
    		super.onDraw(canvas);
    		canvas.drawBitmap(canvasBitmap, 0, 0, null);
    	}
    	
//    	OntouchEvent
    	@Override
		public boolean onTouchEvent(MotionEvent event)
    	{
    		if(event.getAction() == MotionEvent.ACTION_DOWN)
    		{
        		this.DownX = event.getX();
        		this.DownY = event.getY();
    		}
//    		find the picture that User touch and reOrder
//    		this.X = event.getX();
//    		this.Y = event.getY();
//    		order(event);
    		
//			draw the Canvas
			if(event.getAction() == MotionEvent.ACTION_MOVE)
			{
				invalidate();


	    		this.X = event.getX();
	    		this.Y = event.getY();
	    		order(event);
				this.canvas.drawColor(-232432445);
				for(int i = 0; i < 3; i++)
				{
					tempBitmap = pic[0].findByPiority(pic, i);
					this.canvas.drawBitmap(tempBitmap.getPic(), tempBitmap.getXY(1) - tempBitmap.getPic().getWidth() / 2,
							tempBitmap.getXY(2) - tempBitmap.getPic().getHeight() / 2, null);
				}
				tempBitmap = pic[0].findByPiority(pic, 3);
//				if((Math.abs(pic[0].findByPiority(pic, 3).getXY(1) - this.X) < pic[0].findByPiority(pic, 3).getPic().getWidth() / 2) 
//    					&& (Math.abs(pic[0].findByPiority(pic, 3).getXY(2) - this.Y) < pic[0].findByPiority(pic, 3).getPic().getHeight() / 2))
//				{
					this.canvas.drawBitmap(tempBitmap.getPic(), pic[0].findByPiority(pic, 3).preX - tempBitmap.getPic().getWidth() / 2,
							pic[0].findByPiority(pic, 3).preY - tempBitmap.getPic().getWidth() / 2, null);
					pic[0].findByPiority(pic, 3).preX = X;
					pic[0].findByPiority(pic, 3).preY = Y;
//				}
//				else
//				{
//					this.canvas.drawBitmap(tempBitmap.getPic(), tempBitmap.getXY(1) - tempBitmap.getPic().getWidth() / 2,
//								tempBitmap.getXY(2) - tempBitmap.getPic().getWidth() / 2, null);
//				}
				
	    		if(event.getAction() == MotionEvent.ACTION_UP)
	    		{
					pic[0].findByPiority(pic, 3).preX = X;
					pic[0].findByPiority(pic, 3).preY = Y;
	    		}


				
			}
    		 
    		


			return true;
		}
    	 
//    	reorder the picture
    	public void order(MotionEvent event)
    	{
    		for(int i = 3; i > -1; i--)
    		{
    			if((Math.abs(pic[0].findByPiority(pic, i).getXY(1) - this.X) < pic[0].findByPiority(pic, i).getPic().getWidth() / 2) 
    					&& (Math.abs(pic[0].findByPiority(pic, i).getXY(2) - this.Y) < pic[0].findByPiority(pic, i).getPic().getHeight() / 2))
    			{
    				for(Bmp bmp: pic)
    				{
    					if(bmp.getPriority() > pic[0].findByPiority(pic, i).getPriority())
    					{
    						bmp.priority--;
    					}
    				}
    				pic[0].findByPiority(pic, i).setPiority(3);
    				Log.i("current pic", pic[0].findByPiority(pic, i).toString());
    				Log.i("current pic******", pic[0].findByPiority(pic, 3).toString());
//    				pic[0].findByPiority(pic, i).preX = X;
//    				pic[0].findByPiority(pic, i).preY = Y;
    				Log.i("dsfdsf", Integer.toString(i));
    				return;
    			}
    			
    			


    		}
    	}
    	
    	
    	private Bitmap canvasBitmap = Bitmap.createBitmap(480, 500, Config.ARGB_8888);
    	private Bmp tempBitmap = null;
    	private Canvas canvas = new Canvas(canvasBitmap);
		private float X = 0f;
    	private float Y = 0f;
		private float DownX = 0f;
    	private float DownY = 0f;
    	private Bmp[] pic = new Bmp[4];
    }
    
    
    
    
//    @param pic:the Bitmap to draw
//    @param piority: the order to draw picture
//    @param preX,preY: the X and Y 
    class Bmp
    {
//    	构造器
    	public Bmp(Bitmap pic, int piority)
    	{
    		this.pic = pic;
    		this.priority = piority;
    	}
    	
//    	构造器
    	public Bmp(Bitmap pic, int priority, float preX, float preY)
    	{
    		this(pic, priority);
    		this.preX = preX + pic.getWidth() / 2 * 1.5f;
    		this.preY = preY + pic.getHeight() / 2 * 1.5f;
    	}
    	
//    	findPiority
    	public Bmp findByPiority(Bmp[] pic, int priority)
    	{
    		for(Bmp p : pic)
    		{
    			if(p.priority == priority)
    			{
    				return p;
    			}
    		}
    		return null;
    	}
    	
//    	set Priority
    	public void setPiority(int priority)
    	{
    		this.priority = priority;
    	}
    	
//    	return Priority
    	public int getPriority()
    	{
    		return this.priority;
    	}
    	
//    	return X and Y
    	public float getXY(int i)
    	{
    		if(i == 1)
    		{
    			return this.preX;
    		}
    		else if(i == 2)
    		{
    			return this.preY;
    		}
    		return (Float) null;
    	}


//    	getPicture
    	public Bitmap getPic()
    	{
    		return this.pic;
    	}
    	
    	
    	float preX = 0;
    	float preY = 0;
    	Bitmap pic = null;
    	int priority = 0;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class B { public static void main(String[] args) { File file = new File("c:\\a.jpg"); FileInputStream is = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e2) { e2.printStackTrace(); // return rect; } BufferedImage sourceImg = null; try { sourceImg = javax.imageio.ImageIO.read(is); } catch (IOException e1) { e1.printStackTrace(); // return rect; } System.out.println("width = " + sourceImg.getWidth() + "height = " + sourceImg.getHeight()); } } package com.test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class B { public static void main(String[] args) { File file = new File("c:\\a.jpg"); FileInputStream is = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e2) { e2.printStackTrace(); // return rect; } BufferedImage sourceImg = null; try { sourceImg = javax.imageio.ImageIO.read(is); } catch (IOException e1) { e1.printStackTrace(); // return rect; } System.out.println("width = " + sourceImg.getWidth() + "height = " + sourceImg.getHeight()); } } package com.test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class B { public static void main(String[] args) { File file = new File("c:\\a.jpg"); FileInputStream is = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e2) { e2.printStackTrace(); // return rect; } BufferedImage sourceImg = null; try { sourceImg = javax.imageio.ImageIO.read(is); } catch (IOException e1) { e1.printStackTrace(); // return rect; } System.out.println("width = " + sourceImg.getWidth() + "height = " + sourceImg.getHeight()); } } package com.test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class B { public static void main(String[] args) { File file = new File("c:\\a.jpg"); FileInputStream is = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e2) { e2.printStackTrace(); // return rect; } BufferedImage sourceImg = null; try { sourceImg = javax.imageio.ImageIO.read(is); } catch (IOException e1) { e1.printStackTrace(); // return rect; } System.out.println("width = " + sourceImg.getWidth() + "height = " + sourceImg.getHeight()); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值