https://developer.android.com/reference/android/os/Vibrator
Vibrator | Android Developers
developer.android.com
자 형태의 커스텀뷰를 만들고,
눈금을 한 칸 이동할 때마다 진동효과를 주고 싶었다.
커스텀뷰는 콜백으로 칸이 이동될 때마다 정수형 값을 넘겨주는 구조였다.
값계산과 렌더링이 모두 처리된 다음 콜백으로 넘겨주는 것이기 때문에
View 가 아닌 Activity 에 진동관련 코드를 넣었다.(역할분담)
1. onCreate 이후에 Vibrator 객체를 만든다.
private Vibrator vibrator = null;
...
@Override
protected void onResume() {
super.onResume();
vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
}
2. Vibrator.vibrate() 를 이용한다.
deprecated 된 같은 이름의 메서드가 많으니 설명을 잘 읽어보자.
runOnUiThread(new Runnable() {
@Override
public void run() {
//진동과 관련없는 코드. 정수형으로 들어온 값을 EditText 에 표기함.
heightField.setText(Integer.toString(value));
//Activity 에서 제어하는 boolean 변수가 true 라면 콜백 작동 시 조건대로 진동
//조건 : VibrationEffect.createOneShot(milliSeconds, 0~255 진동강도)
if (enableVibrate) {
vibrator.vibrate(VibrationEffect.createOneShot(10, 100));
}
}
});
2번 코드는 콜백 안의 코드이고,
콜백 -> runOnUiThread(...) 시작 -> 10ms 동안 100/255 강도로 진동.
'Android' 카테고리의 다른 글
[Android]SeekBar 커스텀하기 (0) | 2022.11.04 |
---|---|
[Android] 라이브러리 급의 커스텀뷰 만들기 프로젝트(RulerPicker) (0) | 2022.11.03 |
[Android] 커스텀 뷰, 원형 프로그레스 구현기 (0) | 2022.10.06 |
[Firebase] Firestore 보안 규칙 이해하기 (0) | 2022.09.26 |
[Android] Snackbar(스낵바) 띄우기 (0) | 2022.09.05 |