一、目的
- 掌握抽象类的使用
- 学习接口的作用,掌握其使用
- 了解模板设计模式
- demo编写
二、技术及其使用
1.主界面
public class MainActicity extends Activity implements View.OnClickListener{
Button btn;
ImageView img;
//构造方法
public MainActicity(){
//当界面被创建 就自动调用onClick方法
onCreate();
}
@Override
public void onCreate() {
//主界面如何布局
//添加一个按钮
btn=new Button("分享","红色");
//添加一张图片
img=new ImageView("周杰伦");
//将创建的
addChild(btn);
addChild(img);
//1.
//如果一个控件需要监听事件 那么就必须实现监听事件的接口
//告诉按钮是谁在监听这个事件
btn.listener=this;
//2.
//
img.listener=new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("图片被点击了");
}
};
}
//模拟触摸
public void touch(){
btn.getTouchEvent();
img.getTouchEvent();
}
@Override
public void onDestory() {
//销毁之前需要做点什么事情
}
//当事件触发 就会来调用这个onClick方法
@Override
public void onClick(View v) {
System.out.println("按钮被点击了");
}
}
2.管理视图显示和事件监听
public class View{
//所有的视图共有的属性
String backgroundColor;
String borderdColor;
//记录谁想监听我这个事件
//暂时我不确定是谁要监听
//但是监听事件的人肯定实现了这个接口
OnClickListener listener;
//所有的视图都要监听事件
//定义内部接口 封装
public interface OnClickListener{
//定义一套方法 约束外部使用这些方法来监听事件
void onClick(View v);
}
//用于控件接收触摸事件
public void getTouchEvent(){
//调用监听者里面的onClivk方法
listener.onClick(this);
}
}
3.创建一个按钮类
public class Button extends View {
String title;
String titleColor;
public Button(String title,String titleColor){
this.title=title;
this.titleColor=titleColor;
}
}
4.显示一张图片
public class ImageView extends View {
String picture;
public ImageView(String picture){
this.picture=picture;
}
}
5.定义一个界面创建到结束的模板
public abstract class Activity {
//保存这个界面的所有子视图
public ArrayList<View> childs=new ArrayList<>();
//界面创建
public abstract void onCreate();
//界面销毁
public abstract void onDestory();
//将子控件添加到当前界面上去
//接收的时候是用父类接收子类
//当需要访问子类内容的时候 就要强制转化为对应的类
public void addChild(View v){
if (v instanceof Button) {
Button btn=(Button)v;
System.out.println(btn.title+"按钮显示到界面上了");
}if (v instanceof ImageView) {
ImageView iv = (ImageView) v;
System.out.println(iv.picture+"的图片显示到界面上");
}
//保存子控件
childs.add(v);
}
}
6.创建测量代码执行效率的模板
abstract class TimeTemplate{
//通过实现这个方法 获得具体测量的代码
public abstract void code();
//实现测量
public void calculate(){
long start=System.currentTimeMillis();
//测量的代码
code();
long end=System.currentTimeMillis();
System.out.println(end-start);
}
}
class MyCode extends TimeTemplate{
@Override
public void code() {
//写自己的测试代码
int total=0;
for (int i=0;i<100000;i++){
total+=i;
}
}
}
三、主函数及预览
(1)demo1:
public class MyClass {
public static void main(String[] args){
//启动程序 创建界面
MainActicity main=new MainActicity();
//模拟触摸
main.touch();
}
}

1.png
(2)demo2:
public class Myclass {
public static void main(String[] args){
MyCode test=new MyCode();
test.calculate();
}
}

2.png
四、心得体会
又是一天的学习过去了,貌似不会的东西越来越多了,也不知道什么时候才能融会贯通,继续努力吧!