Android界面自定义视图上的按钮面板

时间:2014-10-15 21:57:07

标签: android android-layout view controls

我想创建一个按钮面板,为玩家提供游戏选项。此面板必须滑入和滑出画布,如下图所示。

enter image description here

我可以采取哪些方法来实现这一点。我可以使用普通按钮吗?  任何例子将不胜感激。

由于 专利

3 个答案:

答案 0 :(得分:1)

首先,您可以使用普通按钮进行幻灯片放映。面板。现在,该怎么办?

首先为您的面板创建一个单独的布局xml文件,例如"的 panel.xml &#34 ;.

现在在游戏xml文件中使用 include 标记并设置 gravity:TOP visibility:GONE 并设置它是面板的ID,即

android:id="@+id/panel";

现在创建一个名为" anim "的文件夹在项目 res 文件夹中。这里创建两个xml文件slide_in.xml& slide_out.xml这些xml苍蝇将帮助您获得幻灯片&效果。这些xml文件的代码如下

slide_in.xml:

<?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
     android:fromYDelta="-100%p" 
     android:toYDelta="0%p"
     android:duration="3000"/>

slide_out.xml:

<?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
     android:fromYDelta="0%p" 
     android:toYDelta="-100%p"
     android:duration="3000"/>

现在制作幻灯片所需的所有内容面板准备就绪。

实施:

注意:维护布尔变量 isPanelVisible 以检查面板的可见性状态。

创建两个动画类对象 slideIn &amp; slideOut 以及我们在游戏xml文件中包含的panel.xml的一个View类对象面板,然后将其初始化为:

Animation slideIn= AnimationUtils.loadAnimation(getApplicationContext(),
            R.anim.slide_in);
Animation slideOut= AnimationUtils.loadAnimation(getApplicationContext(),
            R.anim.slide_out);
View panel = findViewById(R.id.panel);

现在,当用户点击按钮以显示幻灯片时,&amp; onClickListener()方法中的out面板执行如下操作:

if(isPanelVisible){
    isPanelVisible = false;
    panel.startAnimation(slideOut);
    panel.setVisibility(View.Gone);
} else{
    isPanelVisible = true;
    panel.startAnimation(slideIn);
    panel.setVisibility(View.Visible);
}

答案 1 :(得分:0)

非常感谢您的回复。我能够在普通布局(例如相对布局)上进行。但是在框架布局中没有出现按钮面板。这是我的xml。 gameView是一个扩展View的java类。 gameoption_panel是一个带有一些按钮的线性布局。我添加了一个按钮来执行isPanelVisible代码部分。

<FrameLayout xmlns: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"
    android:orientation="horizontal" >

    <com.gameView
        android:id="@+id/puzzleView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

     <include layout="@layout/gameoption_panel"
        android:id="@+id/panel"
        android:visibility="invisible"/>

 <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string"
            android:textColor="#FFFFAA" />

</FrameLayout>

答案 2 :(得分:-1)

试试这个布局:

<FrameLayout xmlns: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"
android:orientation="horizontal" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.gameView
        android:id="@+id/puzzleView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <include
        android:id="@+id/panel"
        android:layout_alignParentTop="true"
        layout="@layout/gameoption_panel"
        android:visibility="invisible" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_gravity="center"
        android:text="@string"
        android:textColor="#FFFFAA" />
</RelativeLayout>

</FrameLayout>