gpt4 book ai didi

java - 如何提前获取我的 Button 的尺寸?

转载 作者:行者123 更新时间:2023-11-29 08:59:29 26 4
gpt4 key购买 nike

大家好,我基本上是在做一个钢琴应用程序。经过深思熟虑,我想我已经弄清楚了大多数钢琴应用程序是如何完成的,我被困在这里,这似乎对于获得所有其他功能(如幻灯片、多点触控、添加键等)非常重要。

是否可以在 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>

但我想知道创建的按钮的尺寸或位置 BEFOREHAND 以便我可以在该按钮的顶部绘制一个区域并将该区域用于 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,因为图像加载需要时间,因此代码无法检索它。

谢谢大家。顺便说一句,我是 super 菜鸟。如果我遗漏了什么,我深表歉意。

最佳答案

您可以在布局中设置按钮的宽度/高度 - 而不仅仅是使用 wrap_content

例如:android:layout_width="100dp"

**编辑:不要这样做,它已被弃用 ** 您也可以使用 AbsoluteLayout (而不是当前的 LinearLayout,如果您想准确设置事物的显示位置。

关于java - 如何提前获取我的 Button 的尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18344152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com