damon
在主界面創(chuàng)建方法引用onCreate(),onDestory()贺纲。主界面上顯示按鈕控件竿痰,控件要顯示背景顏色损晤,邊框顏色以及點(diǎn)擊按鈕所執(zhí)行的操作软棺。而控件上要顯示標(biāo)題,以及定義標(biāo)題顏色尤勋。在主界面實(shí)現(xiàn)控件時(shí)喘落,要使用接口。
界面按鈕
碼代碼(先自己碼再借鑒)
創(chuàng)建的類和接口
Activity
package damo;
import java.util.ArrayList;
/**
* 界面抽象類
*/
public abstract class Activity {
//保存界面所有子視圖
public ArrayList<View> childs=new ArrayList<>();
//創(chuàng)建界面
public abstract void onCreate();
//銷毀界面
public abstract void onDestory();
//將子控件添加到當(dāng)前界面
//接受:父類接受
//訪問(wèn):強(qiáng)制轉(zhuǎn)換對(duì)應(yīng)類
public void addChild(View v){
if (v instanceof Button){
Button btn=(Button)v;
System.out.println(btn.title+"顯示到界面上了");
}
if (v instanceof ImagView){
ImagView iv=(ImagView)v;
System.out.println(iv.picture+"的圖片顯示到界面上了");
}
//保存
childs.add(v);
}
}
Button
package damo;
/**
* 創(chuàng)建按鈕類
*/
public class Button extends View{
String title;
String titleColor;
public Button(String title,String titleColor){
this.title=title;
this.titleColor=titleColor;
}
}
ImagView
package damo;
public class ImagView extends View{
String picture;
public ImagView(String picture){
this.picture=picture;
}
}
MainActivity
package damo;
/**
* 主界面
*/
public class MainActivity extends Activity implements View.OnClickListener{
Button btn;
ImagView img;
//構(gòu)造方法
public MainActivity(){
//當(dāng)界面被創(chuàng)建就自動(dòng)調(diào)用onCreate
onCreate();
}
@Override
public void onCreate() {
//如何布局
//添加一個(gè)按鈕
Button btn=new Button("分享","紅色");
//添加一張圖片
ImagView img=new ImagView("周杰倫");
//將創(chuàng)建的控件添加到當(dāng)前界面
addChild(btn);
addChild(img);
//1.
//控件監(jiān)聽(tīng)事件 就必須實(shí)現(xiàn)監(jiān)聽(tīng)事件的接口
//告訴按鈕是誰(shuí)在監(jiān)聽(tīng)這個(gè)事件
btn.listener=this;
//2.
//給ImgView添加一個(gè)事件
img.listener=new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("圖片被點(diǎn)擊了");
}
};
}
//模擬觸摸
public void touch(){
//將屏幕被觸摸的事件傳達(dá)給按鈕
btn.getTouchEvent();
img.getTouchEvent();
}
@Override
public void onDestory() {
//銷毀之前需要做什么
}
//當(dāng)事件觸發(fā)了 就回來(lái)調(diào)用這個(gè)方法
@Override
public void onClick(View v) {
System.out.println("按鈕被點(diǎn)擊了");
}
}
View
package damo;
/**
* 管理視圖顯示和事件監(jiān)聽(tīng)
* 什么情況下需要將一個(gè)父類做出抽象類
* 1.不能直接創(chuàng)建這個(gè)類的對(duì)象
* 2.這個(gè)類里面的某些方法還不知如何實(shí)現(xiàn)
*/
public class View {
//使用視圖都共有的屬性
String BGColor;
String BKColor;
//記錄誰(shuí)想監(jiān)聽(tīng)這個(gè)事件
//暫時(shí)不知 但是知道其肯定要實(shí)現(xiàn)這個(gè)接口
OnClickListener listener;
//使用視圖都監(jiān)聽(tīng)事件
//定義內(nèi)部接口 封裝
public interface OnClickListener{
//定義一套規(guī)范 約束外部使用這些方法來(lái)監(jiān)聽(tīng)事件
public abstract void onClick(View v);
}
//控件接收觸摸事件
public void getTouchEvent(){
//調(diào)用監(jiān)聽(tīng)者里面的onClick方法
listener.onClick(this);
}
}
myclass
package damo;
public class myclass {
public static void main(String[] args) {
//啟動(dòng)
MainActivity main=new MainActivity();
//模擬觸摸
main.touch();
}
}
結(jié)語(yǔ)
打碼一時(shí)爽最冰,一直打一直爽瘦棋。總之堅(jiān)持不懈才能取得勝利暖哨。