我有两个三角形图像,我想用作按钮背景。我使用框架布局进行重叠并能够制作出所需的形状,如图所示。
现在我只是在每个按钮上放置了 onclick 监听器,但它不能正常工作,每次只点击按钮两个工作。
请帮我找到解决方案。
这是我的代码 mainActivity.java 代码。
package com.example.buttontest;
import java.util.Locale;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnGestureListener{
private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector=new GestureDetector(this);
Button b1=(Button)findViewById(R.id.button2);
Button b2=(Button)findViewById(R.id.button1);
b1.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
int width = findViewById(R.id.button1).getWidth();
int height = findViewById(R.id.button1).getHeight();
float touchedX = e.getX();
float touchedY = e.getY();
boolean inUpperTriangle = (height - touchedY) * width > touchedX * height;
if(inUpperTriangle==true)
Toast.makeText(getApplicationContext(), "upper",Toast.LENGTH_SHORT).show();
if(inUpperTriangle) gestureDetector.onTouchEvent(e);
return inUpperTriangle;
}
});
b2.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
int width = findViewById(R.id.button2).getWidth();
int height = findViewById(R.id.button2).getHeight();
float touchedX = e.getX();
float touchedY = e.getY();
boolean inLowerTriangle = (height - touchedY) * width < touchedX * height;
if(inLowerTriangle==true)
Toast.makeText(getApplicationContext(), "lower",Toast.LENGTH_SHORT).show();
if(inLowerTriangle) gestureDetector.onTouchEvent(e);
return inLowerTriangle;
}
});
}
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
}
我的布局文件是。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button2" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button1" />
请让我知道如何正确点击这两个按钮。
这是我的drawables。我使用黄色三角形作为按钮1图像,绿色作为按钮2图像。