我想將觸覺反饋添加到我的應用程序的按鈕並以編程方式控制它們以顯示按鈕狀態(啓用和禁用)。 缺省觸覺反饋設置器僅適用於長按。我如何使它適用於簡單的按鈕點擊。如何在按鈕視圖上啓用觸覺反饋
有沒有一種方法可以對觸摸移動等事件進行觸覺反饋?
我想將觸覺反饋添加到我的應用程序的按鈕並以編程方式控制它們以顯示按鈕狀態(啓用和禁用)。 缺省觸覺反饋設置器僅適用於長按。我如何使它適用於簡單的按鈕點擊。如何在按鈕視圖上啓用觸覺反饋
有沒有一種方法可以對觸摸移動等事件進行觸覺反饋?
這裏是一個答案,儘管它可能不是最好的實現:
import android.view.View;
import android.os.Vibrator;
public class Main extends Activity implements OnClickListener
{
private View myView;
private Vibrator myVib;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
myVib = (Vibrator) this.getSystemService(VIBRATOR_SERVICE);
//myView can be any type of view, button, etc.
myView = (View) this.findViewById(R.id.myView);
myView.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
myVib.vibrate(50);
//add whatever you want after this
}
}
不要忘了,你還需要將「android.permission.VIBRATE」權限添加到程序的清單。您可以通過將下面的「AndroidManifest.xml中」文件這樣做:
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
我希望幫助。
View有一個performHapticFeedback函數,它應該允許您隨時執行它,即在OnClick偵聽器上執行它。
添加以下代碼在onClickListener的onclick方法,但它沒有工作 btn_left \t \t \t \t \t .performHapticFeedback(HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); 我不太確定這個標誌是如何工作的 – 2010-02-10 04:48:17
您是否將觸覺反饋設置爲啓用?根據文檔:http://developer.android.com/intl/fr/reference/android/view/View.html#performHapticFeedback(int)這是獲得觸覺反饋的必要條件。我不確定這種常量,你是否嘗試過使用VIRTUAL_KEY? – 2010-02-10 16:54:12
HapticFeedbackConstants.VIRTUAL_KEY不可用。我目前正在使用Android 1.5_r2 是的,觸覺反饋啓用了xml中的按鈕本身。 仍然沒有運氣 – 2010-02-11 06:15:08
以Mayra爲例,運行觸覺反饋是通過使用此代碼。
View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
而這行代碼可以很容易的包含在你的onclick動作中。 這樣做的很大一部分是你並不需要設置權限在AndroidManifest (我不需要這對SdkVersion「7」(2.1或2.3 7))
還做我的代碼中的註釋在這裏這隻有在使用「觸覺反饋」作爲全局使用時纔會運行。 請參閱http://developer.android.com/reference/android/view/HapticFeedbackConstants.html以便使用它。
應該接受以更好地使用api。 – Ewoks 2014-08-06 14:40:29
在按鈕xml中添加'android:hapticFeedbackEnabled =「true」'或使用'btn.setHapticFeedbackEnabled(true);'in碼 – 2015-10-25 03:58:13
如果您將'this.getSystemService(VIBRATOR_SERVICE);'在按鈕的onClickListener中,然後'this'引用沒有getSystemService方法的按鈕本身。改爲使用它:'getApplicationContext()。getSystemService(VIBRATOR_SERVICE);' – 2012-04-13 13:38:35
你不能總是在onClickListener中使用getApplicationContext() – sudocoder 2014-01-21 16:43:45