2012-01-14 84 views
0

嘿所以我一直在四处搜寻这个主题,并且找不到很多,所以我想我明白地问这个问题。我想要完成的是有两个图像按钮在XML布局中重叠。然后在.java文件中点击顶部按钮时消失并显示第二个图像按钮。点击时,消失并且第一个图像按钮重新出现并且继续。ImageButtons上的setVisibility问题

我遇到的问题是,当我点击第一个按钮,它自败罚款和作品共两次,然后周围的一切自败。我不知道我是否做得对,并且可能有更好的方法来实现这一点,而不是我如何做到这一点,所以我会乐于接受建议。

而且,我之所以没有在拳按钮,它将作为musicbutton2可见是因为当我这样做,在蓝色标签的亮点,它会导致一个强制关闭的另一条线。

optionsActivity.java(新):

package com.crazycastles; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.ImageButton; 

public class optionsActivity extends Activity { 
    /** Called when the activity is first created. */ 
    ImageButton musicbutton, musicbutton2; 
    boolean answer=true; 
    final MediaPlayer buttonSound = MediaPlayer.create(
      optionsActivity.this, R.raw.swords); 


    @Override 

     public void onCreate(Bundle savedInstanceState) { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.options); 




      if (answer=true){ 
      //CREATE BUTTON 1 & SOUND 
      final ImageButton musicbutton = (ImageButton) findViewById(R.id.musicbutton); 
      musicbutton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
       musicbutton.setBackgroundResource(R.drawable.musicbutton2); 
       buttonSound.start(); 
       answer=false; 
      } 
      }); 
      } 


      if (answer!=true){ 
       //CREATE BUTTON 1 & SOUND 
       final ImageButton musicbutton = (ImageButton) findViewById(R.id.musicbutton); 
       musicbutton.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
        musicbutton.setBackgroundResource(R.drawable.musicbutton); 
        buttonSound.start(); 
        answer=true; 
       } 
       }); 
       } 




} 
} 

options.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/mainscreen" > 

    <ImageButton 
     android:id="@+id/musicbutton" 
     android:layout_width="218dp" 
     android:layout_height="51dp" 
     android:layout_marginBottom="100dp" 
     android:layout_marginLeft="50dp" 
     android:layout_marginTop="200dp" 
     android:background="@drawable/musicbutton" 
     android:scaleType="centerCrop" 
      /> 



</LinearLayout> 

回答

1

我觉得你的问题,因为你要使用的线性布局方式和保证金来向上滑动其中一个按钮。

退房RelativeLayout如果切换到使用这些作为你的父母,你可以摆脱边缘的东西之一。按钮将默认为重叠,就像你正在瞄准的一样。如果你这样做并且仍然遇到同样的问题,那么当你的按钮改变可见性以试图查看正在发生的事情时,将一些日志调试状态添加到你的点击监听器中。

如果你的目的只是使按钮的外观变化,我只会用一个按键,只是改变其背景Button.setBackgroundResource()推荐的方式。你可以只保留一个布尔标志,并用它检查是否应设置为R.drawable.musicbutton或R.drawable.musicbutton2

+0

如果我只用一个按钮,不仅改变了外观我还是能有它做例如,暂停和恢复音乐等两种不同的操作? – 2012-01-14 17:03:17

+0

是的,你只是保持一个布尔标志,你可以检查一个if语句。每次按下时,都会翻转布尔值。在你的陈述中,你可以为每种可能性做任何你喜欢的事情。 – FoamyGuy 2012-01-14 17:10:12

+0

好的,谢谢你的帮助。我会尝试。 – 2012-01-14 17:17:02