Java,Android,窥探组合的用法。AndroidUI组合设计模式,Java组合设计模式

 

 

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{
	

}


 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值