Кнопка Android на клике не работает - PullRequest
0 голосов
/ 09 марта 2012

У меня есть очень простая программа, которая использует MediaPLayer. Я новичок в Java и XML и не могу понять, почему созданная мной кнопка возобновления не реагирует на событие нажатия. Он расположен поверх большего изображения кнопки, которая не должна повторяться в этом состоянии, но я думаю, что кнопка верхнего уровня должна независимо, нет?

package com.whynoceros.tonguechi;

 import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageButton;

public class ArtistsActivity extends Activity {

Button restart, resume, stop;
ImageButton play;
MediaPlayer audio;
boolean playing;
boolean paused;
boolean starting;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.tonguechi);
    audio = MediaPlayer.create(ArtistsActivity.this, R.raw.tongue_chi_mix1);

    playing = false;
    paused = false;
    starting = true;
    play = (ImageButton) findViewById(R.id.playbutton);
    stop = (Button) findViewById(R.id.stopbutton);
    resume = (Button) findViewById(R.id.resumebutton);
    restart = (Button) findViewById(R.id.restartbutton);



}
/*      play.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            audio.start();
            play.setBackgroundResource(R.drawable.pausebutton2x);
        }

    });
   */ 

public void playNow(View view) {
    if(paused){

    }

    if(playing){
        audio.pause();
        //play.setImageResource(R.drawable.playbutton2x);
        Animation slideA = AnimationUtils.loadAnimation(this, R.anim.stopani);
        stop.startAnimation(slideA);
        Animation slideB = AnimationUtils.loadAnimation(this, R.anim.resumeani);
        resume.startAnimation(slideB);
        Animation slideC = AnimationUtils.loadAnimation(this, R.anim.restartani);
        restart.startAnimation(slideC);
        playing=false;
        paused=true;
    }
    if(starting){
    audio.start();
    play.setImageResource(R.drawable.pausebutton2x);
    playing=true;
    starting=false;
    paused=false;
    Log.i("play","");


}
}

public void resumeNow(View v) {
    audio.start();
    Animation slideD = AnimationUtils.loadAnimation(this, R.anim.stopani);
    stop.startAnimation(slideD);
    Animation slideE = AnimationUtils.loadAnimation(this, R.anim.resumeani_rev);
    resume.startAnimation(slideE);
    Animation slideF = AnimationUtils.loadAnimation(this, R.anim.restartani_rev);
    restart.startAnimation(slideF);
    play.setEnabled(true);
    playing=true;
    paused=false;
    Log.i("resume","");

}

@Override
protected void onDestroy() {
    super.onDestroy();
    // TODO Auto-generated method stub
        audio.release();
    }

}





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

<ImageButton
    android:id="@+id/playbutton"
    android:layout_width="320dp"
    android:layout_height="131dp"
    android:layout_alignParentTop="true"
    android:layout_marginTop="34dp"
    android:scaleType="fitCenter"
    android:background="@android:color/transparent"
    android:src="@drawable/playbutton2x"
    android:contentDescription="button"
    android:onClick="playNow"/>

<Button
    android:id="@+id/resumebutton"
    android:layout_width="75dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="resume" android:layout_marginTop="-60dp"
    android:onClick="resumeNow"/>

<Button
    android:id="@+id/restartbutton"
    android:layout_width="75dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="restart" android:layout_marginTop="-60dp"/>

<Button
    android:id="@+id/stopbutton"
    android:layout_width="75dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="stop" android:layout_marginTop="-60dp"/>



<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/playbutton"
    android:layout_centerHorizontal="true"
    android:src="@drawable/tips2x" />


<ScrollView
android:id="@+id/SCROLLER_ID"
android:layout_width="280dp"
android:layout_height="240dp"
android:layout_alignTop="@+id/imageView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="53dp"
android:scrollbars="vertical"
android:fillViewport="true">
    <TextView
        android:id="@+id/editText1"
        android:layout_width="280dp"
        android:layout_height="240dp"
        android:layout_alignTop="@+id/imageView2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="53dp"
        android:inputType="textMultiLine"
        android:text="@string/tips_text"
        android:textColor="#6F372D"
        android:textSize="14dp"
        android:textStyle="normal"
        android:typeface="serif" />

Ответы [ 2 ]

1 голос
/ 09 марта 2012

android: onClick предназначен для API уровня 4 и выше, поэтому, если вы нацеливаетесь на <1.6, вы не можете его использовать ... вместо этого вы должны использовать onclicklistener .. я думаю, что вы нацеливаетесь на android 1.5 </p>

0 голосов
/ 28 марта 2012

Мне удалось решить мою собственную проблему, используя следующий подход:

Я заменил всю анимацию XML на Java TranslateAnimation.

Я создал две отдельные схемы XML, одну для позициикнопки до анимации, другие для после.В обоих макетах я ссылаюсь на одни и те же кнопки, идентификаторы и т. Д ...

Я создавал setAnimationListener каждый раз, когда начинаю анимацию, а затем в методе onAnimationEnd применяю другой макет xml."SetContentView (R.layout.layout2);"Кроме того, сразу после настройки contentView мне пришлось повторно создавать экземпляры кнопок, чтобы заставить работать щелчок.

Теперь, когда кнопка перестает двигаться, ее фактическое местоположение обновляется до конечного местоположенияэто внешний вид по отношению к анимации.

...