Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 動態加載自定義控件

android 動態加載自定義控件

編輯:關於Android編程

首先介紹功能,我要實現動態加載布局的效果,之前是采用的new組件的辦法來實現,但是android內存有限,new的對象會達到500多個,為了減少new的對象,我決定使用xml布局代替new的對象。

自定義控件的布局:



    

    

自定義控件 java類:

public class ViewMY extends LinearLayout{
	public ViewMY(Context context) {
		super(context);
		LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View v = mInflater.inflate(R.layout.activity_main, null);
		this.addView(v);
	}

	public ViewMY(Context context, AttributeSet attrs) {
		super(context, attrs);
		 
	}
	@Override
	public void setLayoutParams(android.view.ViewGroup.LayoutParams params) {
		//參數設置不合理,顯示效果很差
		params.width=300;
		params.height=100;
		super.setLayoutParams(params);
	}
}

Activity布局:




    

    

    

        
        
    


MainActivity:

開啟一條線程定時發送消息,來模擬加載組件的效果,自定義組件使用ScrollView展示,注意,這裡ScrollView內部必須要有 一個子布局。把自定義控件new出來添加到子布局中。就可以實現每隔5秒中產生一個控件並設置相對應的參數。

public class MainActivity extends Activity {

	private Handler handler = new Handler(){
		public void handleMessage(Message msg) {
			if(msg.what==1){
				ViewMY v = new ViewMY(MainActivity.this);
				TextView tv = (TextView) v.findViewById(R.id.textView1);
				tv.setText("abcdb   ="+count);
				v.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,600));
				ll.addView(v);
			}
		};
	};
	private ScrollView sv;
	private LinearLayout ll;
	int count=0;
	boolean isRun;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_activity);
		sv = (ScrollView) findViewById(R.id.scrollView1);
		ll = (LinearLayout) findViewById(R.id.scrollView1_layout);
		isRun=true;
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				while(isRun){
					try {
						Thread.sleep(5000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					handler.sendEmptyMessage(1);
					count++;
					if(count==10){
						isRun=false;
					}
				}
			}
		}).start();
	}
}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved