2012-07-29 30 views
5

我正在教一些同事Java意圖進入Android遊戲編程。有沒有辦法在屏幕上顯示一個框,當你觸摸它時,它會改變顏色,而不會創建一個Activity(這是在Eclipse中),並進入醜陋的XML世界?簡單的Android應用程序不使用XML

+0

爲什麼? XML很容易。好有趣! – Ahmad 2012-07-29 02:51:24

+1

對我來說,這很容易,對你來說很簡單,但我正在教授一些非技術性的,非技術性的,非計算機程序員,他們不僅困難,而且醜陋醜陋。 – 2012-07-30 03:36:57

+3

遲早你會開始打無形的磚牆,如果你對待像Swing這樣的機器人。 – Shark 2012-07-30 09:40:59

回答

3

下面是Android中以編程方式創建用戶界面的例子,你要求

public class MyActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Button changeColor = new Button(this); 
     changeColor.setText("Color"); 
     changeColor.setLayoutParams(new ViewGroup.LayoutParams(
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT)); 

     changeColor.setOnClickListener(new View.OnClickListener() { 
      int[] colors = {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW}; 
      @Override 
      public void onClick(View view) { 
       final Random random = new Random(); 
       view.setBackgroundColor(colors[random.nextInt(colors.length - 1) + 1]); 
      } 
     }); 
     setContentView(changeColor); 
    } 

不過,我強烈建議使用XML爲您的佈局。一旦你瞭解它,使用XML就容易得多,所以here是一個教程。

1

您可以通過編程方式創建小部件,並將它們添加到您在onCreate中設置爲內容視圖的佈局中。沿此線的東西會工作:

RelativeLayout layout = new RelativeLayout(this); 
Button btnChangeColour = new Button(this); 
btnChangeColour.setText("Change Colour"); 
btnChangeColour.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     v.setBackgroundColor(...); 
    } 
}); 
layout.addView(btnChangeColour); 
setContentView(layout); 
1

我聽到你在說什麼,是的 - 雖然我確實認爲當你只想在android中編寫遊戲時XML很無聊 - 我可以說XML是android的必備惡魔。至少將ViewStub放入XML中,並在稍後將它們充入代碼中。

或習慣於調用許多「新的LayoutParams」調用,如果你想他們正確格式。

但是如果你想讓它在Android上工作,你的類真的需要覆蓋Activity。