こんにちはみんな私は基本的にピアノアプリをやっています。よく考えた後、ほとんどのピアノアプリがどのように行われるかを理解したと思いますが、ここで立ち往生しています。これは、スライド、マルチタッチ、キーの追加など、他のすべての機能を取得するために非常に重要であるようです.
ドローアブル ボタンのサイズを Hand の前に知ることはできますか? 基本的に、ピアノのキー C と D の 2 つのドローアブル キー ボタンがあるとします。
<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 を返すため、適切なオプションではないようです。したがって、コードは画像を取得できません。
みんなありがとう。ちなみに私は超初心者です。何か見落としがありましたら、お詫び申し上げます。