import android.view.*;
import android.graphics.*;
public class 對象容器 extends 對象{
private int downx=0,downy=0;
private int[] dxX,dxY;
public boolean w=true,h=true;
public Bitmap 背景=null;
public int 背景顏色=Color.argb(255,100,100,100);
public int 對象間距=10;
public Paint 邊框=null;
public 對象容器(int x,int y,int width,int height){
super(x,y,width,height);
類名="對象容器";
}
public void 顯示(Canvas c){
if(顯示)行為(c);
};
public void 事件(MotionEvent e){
if(事件){
行為(e);
運行內部對象(e);
if(e.getAction()==MotionEvent.ACTION_UP){
移動=false;
按下=false;
}
}
}
public void 行為(MotionEvent e){
if(e.getAction()==MotionEvent.ACTION_DOWN){
按下=計算.如果在某個矩形范圍(this,e);
if(按下){
記錄內部對象位置();
downx=(int)e.getX();
downy=(int)e.getY();
}
}
if(e.getAction()==MotionEvent.ACTION_MOVE){
if(按下){
if(計算.絕對值((int)e.getX(),downx)>10||計算.絕對值((int)e.getY(),downy)>10)
移動=true;
if(內部對象!=null){
int x=(int)e.getX()-downx;
int y=(int)e.getY()-downy;
移動內部對象(x,y);
}
}
}
if(e.getAction()==MotionEvent.ACTION_UP){
if(按下){
dxX=null;
dxY=null;
}
}
}
public void 行為(Canvas c){
drawbeijing(c,背景顏色);
}
public void drawbeijing(Canvas c,int color){
Bitmap bj=Bitmap.createBitmap(寬,高,Bitmap.Config.ARGB_8888);
Canvas cc=new Canvas(bj);
if(背景!=null)cc.drawBitmap(背景,0,0,null);
cc.drawColor(color);
if(內部對象!=null&&內部對象顯示)運行內部對象(cc);
if(邊框!=null)圖形.畫矩形(0,0,寬-1,高-1,cc,邊框);
c.drawBitmap(bj,x,y,null);
}
public void 移動內部對象(int x,int y){
int i=0;
if(內部對象!=null&&dxX!=null&&dxY!=null)
while(i<內部對象.length){
if(w)內部對象[i].x=dxX[i]+x;
if(h)內部對象[i].y=dxY[i]+y;
i++;
}
}
public void 記錄內部對象位置(){
int i=0;
if(內部對象!=null)
while(i<內部對象.length){
dxX=合并.合并(dxX,內部對象[i].x);
dxY=合并.合并(dxY,內部對象[i].y);
i++;
}
}
public void 運行內部對象(MotionEvent e){
e.setLocation(e.getX()-x,e.getY()-y);
if(按下)super.運行內部對象(e);
e.setLocation(e.getX()+x,e.getY()+y);
}
public void X方向裝入對象(對象 dx){
if(內部對象==null){
dx.x=0;
裝入對象(dx);
}else{
dx.x=內部對象[內部對象.length-1].x+內部對象[內部對象.length-1].寬+對象間距;
裝入對象(dx);
}
}
public void Y方向裝入對象(對象 dx){
if(內部對象==null){
dx.y=0;
裝入對象(dx);
}else{
dx.y=內部對象[內部對象.length-1].y+內部對象[內部對象.length-1].高+對象間距;
裝入對象(dx);
}
}
public void 設置邊框(int 寬度,int 顏色){
邊框=new Paint();
邊框.setStyle(Paint.Style.STROKE);
邊框.setTextSize(寬度);
邊框.setColor(顏色);
}
}
顧名思義這個類是一個對象的容器,一個對象通過裝入對象這個方法裝入這個容器,可以通過觸控移動容器里的所有對象,容器里的對象坐標保持相對不變。