我想创建一个按钮面板,为玩家提供游戏选项。此面板必须滑入和滑出画布,如下图所示。
我可以采取哪些方法来实现这一点。我可以使用普通按钮吗? 任何例子将不胜感激。
由于 专利
答案 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>