Android java代碼布局的activity

來源:互聯網
上載者:User

知道activity總要有一個xml的布局檔案相對應,但如果沒有這個xml 而用Java 直 接在代碼中簡單實現,也就是說,這個負責布局的xml 現在我不在寫他。而是直接有java協助我們產生,有些朋友會問,有這個必要麼,自己單寫個java 類實現不和xml 布局是同樣的功能。但實際上,很多時候我們的介面不是完全不變的,如果一個view 中出現了大量的變化,那原來的xml 也就成了雞肋。而且一旦我們想要將寫好的一個activity自己封裝成JAR包,這時多餘的xml 很可能就變成了累贅。為解決這個問題,自己做了一點測試。感覺效果能簡單的解決這個問題,所以發出來,大家權當參考。
在一個activity中在重寫的 onCreate 方法裡,我們必須將布局檔案指定進來 setContentView(R.layout.XXXX ); 現在我們將這個指定的xml 放棄。
java代碼:
Java代碼 
import android.app.Activity; 
import android.content.Context; 
import android.content.res.Resources; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
 
public class IndexActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        newView view = newView.buildView(IndexActivity.this); 
        // 原來需要指定xml的地方,換成建立相應布局的對象 
        setContentView(view); 
        Resources res = getResources(); 
        // 指定載入的圖片 
        Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.back_1); 
        BitmapDrawable bmp1 = new BitmapDrawable(bmp); 
        view.imageView.setImageDrawable(bmp1); 
    } 
 
    // 這裡實驗了LinearLayout布局,其他的布局暫時沒做嘗試,不過基本原理類似 
    static class newView extends LinearLayout { 
        private ImageView imageView; 
 
        public newView(Context c) { 
            super(c); 
            /*
             * 這裡只建立了個ImageView 同理,如TextView EditText Button
             * 等等都在這裡建立最後只要添加到addView()中即可,補充下, 這裡建立的布局規則同
                         *xml布局時的規則相同。
             */ 
            imageView = new ImageView(c); 
            /*
             * 可以設定多種參數如大小,高度,顏色等等, 這些方法在android提供的api中很容易
                         * 找到,這裡列出幾種常用的
             *  TextView mTitle = new TextView(c); 
             * //添加文字 
             * mTitle.setText(title); 
             * //置中
             * mTitle.setGravity(Gravity.CENTER); 
             * //字型顏色
             * mTitle.setTextColor(Color.WHITE);
                 *
             * addView實際有多種構造方法,對於位置變化的需求, 需要自己添加這裡舉例一個常用的
             * addView(mTitle, new LinearLayout.LayoutParams( 
                         * LayoutParams.WRAP_CONTENT,
             * LayoutParams.WRAP_CONTENT,Gravity.CENTER_HORIZONTAL));
             */ 
            addView(imageView); 
            /*
             * 對於LinearLayout本身的屬性設定, 我們直接利用繼承後提供的方法,直接傳參數即可
             * 如:setBackgroundResource(imgId); setPadding(0, 8, 0, 8);等
             */ 
        } 
 
        public static newView buildView(Context c) { 
            return new newView(c); 
        } 
    } 

作者“2528”
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.