import android.view.*;
import android.graphics.*;
public class 對(duì)象{
public String 類名="對(duì)象";
public String 名字="";
public 對(duì)象 父對(duì)象=null;
public 對(duì)象[] 內(nèi)部對(duì)象=null;
public int x=0,y=0,寬=0,高=0;
public int XWindex=0;
public boolean 按下=false,移動(dòng)=false;
public String 狀態(tài)="";
public boolean 顯示=true,內(nèi)部對(duì)象顯示=true;
public boolean 事件=true,內(nèi)部對(duì)象事件=true;
public 對(duì)象(int x,int y,int 寬,int 高){
this.x=x;
this.y=y;
this.寬=寬;
this.高=高;
}
public 對(duì)象(){}
public void 顯示(Canvas c){
if(顯示){
行為(c);
功能(c);
if(內(nèi)部對(duì)象顯示){
運(yùn)行內(nèi)部對(duì)象(c);
}
}
}
public void 事件(MotionEvent e){
if(事件){
行為(e);
功能(e);
if(內(nèi)部對(duì)象事件){
運(yùn)行內(nèi)部對(duì)象(e);
}
if(e.getAction()==MotionEvent.ACTION_UP){
按下=false;
移動(dòng)=false;
}
}
}
public void 行為(Canvas c){}
public void 行為(MotionEvent e){}
//向?qū)ο髢?nèi)部組裝對(duì)象
public void 裝入對(duì)象(對(duì)象 dx){
dx.父對(duì)象=this;
this.內(nèi)部對(duì)象=合并(this.內(nèi)部對(duì)象,dx);
}
//實(shí)現(xiàn)所有內(nèi)部對(duì)象的顯示行為
public void 運(yùn)行內(nèi)部對(duì)象(Canvas c){
int i=0;
if(內(nèi)部對(duì)象!=null){
while(i<內(nèi)部對(duì)象.length){
內(nèi)部對(duì)象[i].顯示(c);
i++;
}
}
}
//實(shí)現(xiàn)所有內(nèi)部對(duì)象的事件行為
public void 運(yùn)行內(nèi)部對(duì)象(MotionEvent e){
int i=0;
if(內(nèi)部對(duì)象!=null){
while(i<內(nèi)部對(duì)象.length){
內(nèi)部對(duì)象[i].事件(e);
i++;
}
}
}
public void 功能(Canvas c){}
public void 功能(MotionEvent e){}
public boolean 物理按鍵(int key,KeyEvent event){
按鍵行為(key,event);
int i=0;
if(內(nèi)部對(duì)象!=null){
while(i<內(nèi)部對(duì)象.length){
內(nèi)部對(duì)象[i].物理按鍵(key,event);
i++;
}
}
return true;
}
private void 按鍵行為(int key,KeyEvent event){
if(key==KeyEvent.KEYCODE_BACK)按鍵返回();
}
public void 清空某類(String 類名){
對(duì)象[] dx=null;
int i=0;
while(i<內(nèi)部對(duì)象.length){
if(!內(nèi)部對(duì)象[i].類名.equals(類名)){
dx=合并(dx,內(nèi)部對(duì)象[i]);
}else 內(nèi)部對(duì)象[i]=null;
i++;
}
內(nèi)部對(duì)象=dx;
}
public int 查詢某對(duì)象對(duì)位置(String 名字){
int i=0;
if(內(nèi)部對(duì)象!=null){
while(i<內(nèi)部對(duì)象.length){
if(內(nèi)部對(duì)象[i].equals(名字)){
break;
}
i++;
}
}
return i;
}
public void 清除某對(duì)象(String 名字){
if(內(nèi)部對(duì)象!=null){
對(duì)象[] dx=null;
int i=0;
while(i<內(nèi)部對(duì)象.length){
if(!內(nèi)部對(duì)象[i].名字.equals(名字)){
dx=合并.合并(dx,內(nèi)部對(duì)象[i]);
}else 內(nèi)部對(duì)象[i]=null;
i++;
}
內(nèi)部對(duì)象=dx;
}
}
public static 對(duì)象[] 合并(對(duì)象[] a,對(duì)象 b){
對(duì)象[] jieguo=null;
if(a!=null)jieguo=new 對(duì)象[a.length+1];
else jieguo=new 對(duì)象[1];
if(a!=null){
int i=0;
while(i
if(i
else jieguo[i]=b;
i++;
}
}else jieguo[0]=b;
return jieguo;
}
public void 按鍵返回(){}
}
這是非常重要的一個(gè)類,是整個(gè)框架實(shí)現(xiàn)的基礎(chǔ),雖然代碼不多,卻包含整個(gè)思想,以后大部分的UI對(duì)象都將繼承至這個(gè)類。
下面對(duì)所有變量和方法進(jìn)行詳細(xì)介紹:
String 類名="對(duì)象";
這個(gè)變量用于標(biāo)識(shí)類別,繼承至這個(gè)類后的新的類別重寫這個(gè)變量標(biāo)識(shí)所屬類。當(dāng)程序里要對(duì)單獨(dú)某類處理時(shí)這個(gè)變量很有用處。
String 名字="";
這個(gè)變量用于標(biāo)識(shí)具體某個(gè)對(duì)象,當(dāng)我們?cè)谝欢褜?duì)象集合里可以通過名字很好的找到對(duì)象,并對(duì)它進(jìn)行操作。
對(duì)象 父對(duì)象=null;
此變量在當(dāng)前對(duì)象被另一個(gè)對(duì)象所裝入時(shí)獲得另一個(gè)對(duì)象的實(shí)例。
對(duì)象[] 內(nèi)部對(duì)象=null;
每當(dāng)有別的對(duì)象裝入這個(gè)對(duì)象時(shí),這個(gè)變量用于存放裝入的對(duì)象,裝入的所有對(duì)象的事件()和顯示()這兩個(gè)方法都會(huì)被本對(duì)象實(shí)現(xiàn),無論對(duì)象和對(duì)象之間嵌套多少層。
int x=0,y=0,寬=0,高=0;
這4個(gè)變量用于描述對(duì)象在屏幕坐標(biāo)上的位置和自身所占的范圍,如果你要寫一個(gè)繼承至對(duì)象的按鍵,這4個(gè)變量就很重要了。
下面開始介紹方法:
顯示(Canvas c);
由于窗體類(View)實(shí)現(xiàn)了內(nèi)部變量環(huán)境(對(duì)象)的顯示方法,所以所有對(duì)象無論怎么裝,只要最終被窗體所裝入,他們的顯示方法都將被實(shí)現(xiàn)。此方法用于繪制當(dāng)前類和所有內(nèi)部對(duì)象。
事件(MotionEvent e);
同上,不同的是,這是一個(gè)獲得觸屏行為和坐標(biāo)的。
運(yùn)行內(nèi)部對(duì)象(Canvas c);
運(yùn)行內(nèi)部對(duì)象(MotionEvent e);
用于實(shí)現(xiàn)所有內(nèi)部對(duì)象的顯示和事件,由于所裝入的對(duì)象也是對(duì)象它們也會(huì)自動(dòng)實(shí)現(xiàn)自己內(nèi)部對(duì)象的所有顯示和行為,而它們的所有內(nèi)部對(duì)象的每個(gè)對(duì)象又會(huì)從復(fù)這兩個(gè)方法,所以無論一個(gè)對(duì)象系統(tǒng)有多復(fù)雜它的每部分都將被實(shí)現(xiàn)。