Android

안드로이드 - 버튼 누르는 동안 동작

로픽 2017. 4. 27. 10:53
300x250

Button 누르는 동안 동작

rc카 방향키를 구성하는 과정에서 누르는 동안 동작을 전송하기 누르는 동안에 동작할 수 있는 리스너를 찾고 있었습니다.

그러던 중 좋은 코드를 발견하였습니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >
 
    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼" />
 
</LinearLayout>

package com.example.dmbtv.buttontest;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

private Button _btn1;
private boolean _isBtnDown;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

_btn1 = (Button)findViewById(R.id.btn1);
_btn1.setOnTouchListener(onBtnTouchListener);
}

private void onBtnDown()
{
TouchThread kThread = new TouchThread();
kThread.start();
}

private Handler touchHandler = new Handler()
{
public void handleMessage(Message msg)
{
Log.d("MainActivity", "click");
}
};

private class TouchThread extends Thread
{
@Override
public void run() {
super.run();
while(_isBtnDown)
{
touchHandler.sendEmptyMessage(9876);

try{
Thread.sleep(200);
}catch(Exception e){
e.printStackTrace();
}
}
}
}

private View.OnTouchListener onBtnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
_isBtnDown = true;
onBtnDown();
break;

case MotionEvent.ACTION_UP:
_isBtnDown = false;
break;

default:
break;
}
return false;
}
};
}
출처: http://susemi99.tistory.com/1184 [쎄미 - 우물쭈물하다가 내 이럴 줄 알았지]

* 스레드를 이용하여 버튼을 클릭하는 동안 0.2초 마다 로그를 출력하게 코딩 되어 있습니다.


* 이런 방식을 변경하여 방향키에 적용할 수 있습니다.


반응형