大家好,我基本上是在做一个钢琴应用程序。经过深思熟虑,我想我已经弄清楚了大多数钢琴应用程序是如何完成的,但我被困在这里,这对于获得所有其他功能(如幻灯片、多点触控、添加键等)似乎非常重要。
是否可以在 Hand 之前知道我的可绘制按钮的尺寸?假设我基本上有两个可绘制的键按钮,钢琴键 C 和 D:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="bottom" >
<Button
android:id="@+id/ckey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/keybutton" />
<Button
android:id="@+id/dkey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/keybutton" />
对于钢琴应用程序(白键),它们都使用相同的选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/key"
android:state_pressed="true"/>
<item
android:drawable="@drawable/key_pressed"/>
</selector>
但我想知道创建的按钮之前的尺寸或位置,以便我可以在该按钮的顶部绘制一个区域并将该区域用于 onTouchListener 。我需要那个区域才能使用 onTouch。
@Override
public boolean onTouch(View v, MotionEvent event) {
int numberOfKeys = 2;
Region[] keyBoard = new Region[2]; //for 2 White Piano Keys
Integer pointerIndex = event.getActionIndex();
Float x = event.getX(pointerIndex);
Float y = event.getY(pointerIndex);
for(int j=0;j<1;j++){
if(this.keyBoard[j].contains(x.intValue(),y.intValue())){
//play corresponding sound
}
}
所以知道我的图像的尺寸:key.png 和 key_pressed.png 以及屏幕宽度和高度,也许还有其他我不知道的参数。是否可以在应用程序启动之前预先知道我的按钮的尺寸或坐标或位置?
否则,我怎样才能得到坐标?似乎 getTop() 和 getLeft() 不是好的选择,因为它们返回 0,因为图像需要时间加载,因此代码无法检索它。
多谢你们。顺便说一句,我是超级菜鸟。如果我错过了什么,我深表歉意。