package com.panda.android.pattern;
/**测试类*/
public class Client {
public static void main(String args[]){
//新建线性布局
LinearLayout linearLayout = new LinearLayout();
//新建按钮
Button btn = new Button();
btn.setText("我是一个按钮.啦啦啦");
//添加一个按钮到线性布局中
linearLayout.addView(btn);
TextView tv=new TextView();
tv.setText("我是一个显示框.啦啦啦");
//添加一个显示框到线性布局中
linearLayout.addView(tv);
System.out.println("线性布局中子视图一共有:"+linearLayout.getChildSize()+"个");
//从现行布局中移除一个按钮
linearLayout.removeView(btn);
System.out.println("线性布局中子视图一共有:"+linearLayout.getChildSize()+"个");
//为按钮设置回调监听。
btn.setOnClickListener(new OnClickListener() {
//回调方法
@Override
public void onClick(View view) {
view.printText();
}
});
//为显示框设置回调监听
tv.setOnClickListener(new OnClickListener() {
//回调方法
@Override
public void onClick(View view) {
view.printText();
}
});
//模拟触发点击按钮
btn.TouchView();
//模拟触发点击显示框
tv.TouchView();
}
}
package com.panda.android.pattern;
/***
* 按钮点击事件的接口
* @author pdan
* @da2016年4月25日
*/
public interface OnClickListener {
public void onClick(View view);
}
package com.panda.android.pattern;
/***
* 模拟Android的一套视图机制。留给大家慢慢体会。
* 自己喜欢android,喜欢里面这些设计模式。
* 有问题的请教点一下在此留下qq号了: 1162224940
* @author pdan
* @da2016年4月24日
*/
public class View {
/**为视图保存文本*/
private String text;
/**按钮监听器**/
private OnClickListener listener;
/**为视图设置文本*/
public void setText(String text){
this.text=text;
}
/**打印view上的文本*/
public void printText(){
System.out.println("view上的文本是:"+text);
}
/**设置视图监听器*/
public void setOnClickListener(OnClickListener listener){
this.listener=listener;
}
/**模拟点击事件*/
public void TouchView(){
this.listener.onClick(this);
}
}
package com.panda.android.pattern;
import java.util.ArrayList;
/**视图容器*/
public class ViewGroup extends View{
/**存储按钮的集合*/
ArrayList<View> mChildren=new ArrayList<View>();
/*** 添加子视图 */
public void addView(View child) {
mChildren.add(child);
}
/** * 移除子视图 */
public void removeView(View view) {
mChildren.remove(view);
}
/** * 得到某个下标的子视图 */
public View getChildAt(int index) {
return mChildren.get(index);
}
/**得到一共有多少个子视图*/
public int getChildSize(){
return mChildren.size();
}
}
package com.panda.android.pattern;
/**这是一个线性布局*/
public class LinearLayout extends ViewGroup {
}
package com.panda.android.pattern;
/**按钮*/
public class Button extends View{
}
package com.panda.android.pattern;
public class TextView extends View{
}