Android研究之動態建立UI介面詳解,androidui介面詳解

來源:互聯網
上載者:User

Android研究之動態建立UI介面詳解,androidui介面詳解


Android的基本UI介面一般都是在xml檔案中定義好,然後通過activity的setContentView來顯示在介面上,這是Android UI的最簡單的構建方式。其實,為了實現更加複雜和更加靈活的UI介面,往往需要動態產生UI介面,甚至根據使用者的點擊或者配置,動態地改變UI,本文即介紹該技巧。對事件和進程的可能安卓裝置實現觸摸事件的監聽,跨進程

假設Android工程的一個xml檔案名稱為activity_main.xml,定義如下:


12345678910111213141516171819 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context=".MainActivity">     <TextView         android:id="@+id/DynamicText"         android:layout_width="wrap_content"         android:layout_height="wrap_content"/> </LinearLayout>

在 MainActivity 中,希望顯示這個簡單的介面有三種方式(注:下面的代碼均在 MainActivity 的 onCreate() 函數中實現 )。

(1) 第一種方式,直接通過傳統的 setContentView(R.layout.*) 來載入,即:


1234567 setContentView(R.layout.activity_main);                                                            TextViewtext =(TextView)this.findViewById(R.id.DynamicText); text.setText("Hello World");

(2) 第二種方式,通過 LayoutInflater 來間接載入,即:


12345678910111213 LayoutInflatermInflater =LayoutInflater.from(this);     ViewcontentView  =mInflater.inflate(R.layout.activity_main,null);                                                                                                            TextViewtext =(TextView)contentView.findViewById(R.id.DynamicText); text.setText("Hello World");                                                setContentView(contentView);

註:

LayoutInflater 相當於一個“布局載入器”,有三種方式可以從系統中擷取到該布局載入器對象,如:

方法一: LayoutInflater.from(this);

方法二: (LayoutInflater)this.getSystemService(this.LAYOUT_INFLATER_SERVICE);

方法三: this.getLayoutInflater();

通過該對象的 inflate方法,可以將指定的xml檔案載入轉換為View類對象,該xml檔案中的控制項的對象,都可以通過該View對象的findViewById方法擷取。

(3)第三種方式,純粹地手工建立 UI 介面

xml 檔案中的任何標籤,都是有相應的類來定義的,因此,我們完全可以不使用xml 檔案,純粹地動態建立所需的UI介面,樣本如下:


1234567891011121314151617 LinearLayoutlayout =new LinearLayout(this);                                                                                                        TextViewtext =new TextView(this); text.setText("Hello World"); text.setLayoutParams(new  ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));                                                                                                        layout.addView(text);                                                                                                        setContentView(layout);

Android動態UI建立的技巧就說到這兒了,在本樣本中,為了方便理解,都是採用的最簡單的例子,因此可能看不出動態建立UI的優點和用途,但是不要緊,先掌握基本技巧,後面的文章中,會慢慢將這些技術應用起來,到時侯就能理解其真正的應用情境了。


怎在Android中實現service動態更新UI介面

那麼如何?service動態更新UI介面呢?案例:通過service向遠程伺服器發送請求,根據伺服器返回的結果動態更新主程式UI介面,主程式可即時關閉或重啟服務。 【昆明達內android培訓】 之前我們曾向您介紹過Android的UI設計與後台線程互動,據Android API的介紹,service一般是在後台啟動並執行,沒有介面的。那麼如何?service動態更新UI介面呢? 案例:通過service向遠程伺服器發送請求,根據伺服器返回的結果動態更新主程式UI介面,主程式可即時關閉或重啟服務。【昆明android培訓機構哪裡好】 註冊BroadcastReceiver在主程式activity中註冊一個BroadcastReceiver,用於接收Service發布的廣播。【昆明android培訓哪裡好】 @Override protected void onStart() {//重寫onStart方法 dataReceiver = new DataReceiver(); IntentFilter filter = new IntentFilter();//建立IntentFilter對象 filter.addAction("com.justel.serviceBC"); registerReceiver(dataReceiver, filter);//註冊Broadcast Receiver super.onStart(); } 停止service命令主程式activity可發布廣播,用於向後台service傳遞資料或控制資訊,如停止service命令。 btnStop.setOnClickListener(new OnClickListener() {//為按鈕添加點擊事件監聽 @Override public void onClick(View v) {//重寫onClick方法 Intent myIntent = new Intent();//建立Intent對象 myIntent.setAction("com.justel.service"); myIntent.putExtra("cmd", CMD_STOP_SERVICE); sendBroadcast(myIntent);//發送廣播 } }); 接收廣播後台service註冊BroadCastReceiver用於接受主程式發送的廣播 @Override public int onStartCommand(Intent intent, int flags, int startId) {//重寫onStartCommand方法 IntentFilter filter = new IntentFilter();//建立IntentFilter對象 filter.addAction("com.justel.service"); registerReceiver(cmdReceiver, filter);//註冊Broadcast Receiver doJob();//調用方法啟動線程,自己來完成 return super.onStartCommand(intent, flags, startId); } 即時發送後台servi......餘下全文>>
 
在android開發中,怎動態產生多介面

我覺的可以這樣
1. 先把excel的題解析出來產生一個題庫集合。每個題當然要預留出你要記錄的屬性包括結果、類型等。。。
2. 布局分類,如果是單選可以寫個單選布局、多選寫個多選布局、問答寫個問答的布局,這三種布局根據每個題的類型而顯示其一。
3. 上一題和下一題和題庫集合是綁定關係,代表題庫集合的位置,從而可以判斷下一題根據題的類型該顯示哪一個類型的布局。
這樣可以只用一個介面,多個子布局控制其顯示方式實現
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.