2011-01-24 63 views
4

如何在畫布上(在頂部)設置一些UI元素?Android:畫布層上的UI元素

我有一個簡單的觸摸遊戲,其圖形放置在自定義視圖與畫布。但是,因爲我的全屏面板在setContentView()中,所以無法添加任何UI項目(如progressBar或徽標)。我希望整個畫布層可以看到一些對象(progressBar,logo)「漂浮」在它上面。

主類:

public class GameClass extends Activity implements OnGestureListener { 

Panel panel; 

public void onCreate(Bundle savedInstance) { 
    super.onCreate(savedInstance); 

    panel = new Panel(this, 1, 2); 
    setContentView(Panel); 
    ... 
} 

面板類:

public class Panel extends View { 

    public Panel(Context context, int Var1, int Var2) { 
    super(context); 
    ... 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    ... 
    } 
} 

作爲代碼所示,觸摸被內部GameClass處理,並在動畫中的變化是面板的內部處理。

或者也許..是否有可能通過進度條和按鈕啓動新的透明活動,以便覆蓋活動上的按鈕和基礎活動上的對象?我可能需要一種方法來關閉透明活動按鈕上的所有圖層(透明活動,面板,GameClass)。複雜? :d

回答

3

我也有同樣的問題,這裏是我如何解決它

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.game); 

    drawView = new DrawView(this); 
    drawView.requestFocus(); 
    LinearLayout upper = (LinearLayout) findViewById(R.id.LinearLayout01); 
    upper.addView(drawView); 
    ImageButton menu = (ImageButton) findViewById(R.id.ImageButton01); 
    menu.setOnClickListener(new OnClickListener() 
    {   
     @Override 
     public void onClick(View v) 
     { 
      finish(); 
     } 
    }); 
    ImageButton reset = (ImageButton) findViewById(R.id.ImageButton02); 
    reset.setOnClickListener(new OnClickListener() 
    {   
     @Override 
     public void onClick(View v) 
     { 
      drawView.resetGame(); 
     } 
    }); 
} 

,而不是設置內容查看到面板加入它的LinearLayout是在我game.xml添加的,在這裏我去

game.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:background="@drawable/game_background"> 
<LinearLayout 
    android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="350dip" /> 
<LinearLayout 
    android:id="@+id/LinearLayout02" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/LinearLayout01"> 
    <ImageButton 
     android:id="@+id/ImageButton01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/menu"></ImageButton> 
    <ImageButton 
     android:id="@+id/ImageButton02" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/reset"></ImageButton> 
</LinearLayout> 
<LinearLayout 
    android:layout_below="@+id/LinearLayout01" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:id="@+id/layout_ad" 
    android:layout_height="wrap_content" /> 

+0

在這種情況下,您可以在圖像按鈕下垂直繪製畫布,對吧?我現在在我的應用程序中檢查效果。我想要實現的是將圖像按鈕或進度條半透明以覆蓋畫布。現在測試如何使用它。 – yosh

+0

你知道處理程序的概念試試吧http://developer.android.com/reference/android/os/Handler.html – ingsaurabh

+0

我修改了一下,在沒有任何xml的情況下在RelativeLayout中使用了2個UIElements。這樣,後一個是最上面:) – yosh