2011-01-24 2 views
4

Как установить некоторые элементы пользовательского интерфейса поверх (поверх) холста?Android: элементы пользовательского интерфейса поверх слоя холста

У меня есть простая игра с сенсорным управлением, которая имеет свою графику, размещенную на пользовательском представлении с холстом. Однако, поскольку моя панель полного экрана находится в setContentView(), я не могу добавить элементы пользовательского интерфейса, такие как 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(); 
     } 
    }); 
} 

вместо установки contentview на панели, добавив его 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

Я немного изменил его, использовал 2 UIElements внутри RelativeLayout без каких-либо xml. Таким образом, последний находится сверху :) – yosh

Смежные вопросы