我有一个非常简单的程序,它使用MediaPLayer。我是java和xml的新手,对于我的生活,我无法弄清楚为什么我创建的简历按钮不会响应点击事件。它确实位于一个更大的imageButton的顶部,它不应该在这种状态下重复,但我认为顶级按钮应该不管,不是吗?
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" />
答案 0 :(得分:1)
android:onClick适用于API级别4以上,因此如果你的目标是&lt; 1.6,然后你不能使用它...而你应该使用onclicklistener ..我认为你的目标是Android 1.5
答案 1 :(得分:0)
我设法使用以下方法解决了我自己的问题:
我用java TranslateAnimation替换了所有的xml动画。
我创建了两个单独的xml布局,一个用于动画之前按钮的位置,另一个用于之后。在这两种布局中,我都引用相同的按钮,ID等...
每次开始动画时我都创建了一个setAnimationListener,然后在onAnimationEnd方法中,我应用了另一个xml布局。 “的setContentView(R.layout.layout2);”此外,在设置contentView之后,我不得不重新实例化按钮,以使点击工作。
现在,一旦按钮停止移动,它的实际位置会更新到它的外观的最终位置,相对于动画。