![](/img/trans.png)
[英]Making the count down timer skip 5 seconds when button is pressed (Android studios)
[英]How to make a button bigger when pressed? (Android Studios)
我正在 Android 工作室開發一個應用程序,希望我的自定義按鈕在按下時變大,go 在發布時恢復到默認定義的 state。 我寫了一個 xml 文件來定義我的按鈕,但它沒有用。 這是自定義按鈕的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/play_button_pressedhdpi"
android:state_pressed="true" />
<item android:drawable="@drawable/play_button_defaulthdpi"
android:state_focused="true" />
<item android:drawable="@drawable/play_button_defaulthdpi" />
</selector>
這似乎不起作用。 任何幫助,將不勝感激。
編輯:
我剛剛嘗試了下面第一個答案中提到的以下代碼:
button1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams();
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
//sendMessage("Key1\n");
lp.width = 200;
lp.height = 200;
button1.setLayoutParams(lp);
}
if(event.getAction() == MotionEvent.ACTION_UP) {
lp.width=90;
lp.height=90;
button1.setLayoutParams(lp);
}
return false;
}
});
這是有道理的,但由於某種原因沒有奏效。
任何幫助,將不勝感激...
我終於能夠解決問題。 我創建了兩個不同大小的兩個單獨的圖像,並使用 setOnTouchListener() 以下列方式為每個狀態ACTION_DOWN
和ACTION_UP
的按鈕分配適當的圖像:
button1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
float x = (float) 1.25;
float y = (float) 1.25;
button1.setScaleX(x);
button1.setScaleY(y);
button1.setBackgroundResource(R.drawable.blue_220);
return true;
}
else if(event.getAction() == MotionEvent.ACTION_UP)
{
float x = 1;
float y = 1;
button1.setScaleX(x);
button1.setScaleY(y);
button1.setBackgroundResource(R.drawable.blue_206);
}
return false;
}
});
結果如願。
我以這種方式使用 MotiovEvent 來調整按鈕的大小:
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
RelativeLayout.LayoutParams lp = (LayoutParams) b.getLayoutParams();
if(event.getAction() == MotionEvent.ACTION_DOWN) {
sendMessage("key1\n");
lp.width=140;
lp.height=140;
button.setLayoutParams(lp);
}
if(event.getAction() == MotionEvent.ACTION_UP) {
lp.width=90;
lp.height=90;
button.setLayoutParams(lp);
}
return false;
}
});
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.