차근차근/Android
onKeyDown()이벤트
검색어 : onKeyDown
onKeyDown 자바스크립트 웹뷰 뒤로가기
방향키
http://www.androidpub.com/850941
제가 다른 클래스에서 액티비티에 있는 onKeyDown() 이벤트함수를 호출했습니다.
KeyEvent e = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_DOWN);
mFaceDetect.onKeyDown(KeyEvent.KEYCODE_DPAD_DOWN,e);
이와 같은 방법으로 호출을 해서 keyDown()가 호출되긴 하는데요...
코드를 보시면 알겠지만 방향키 호출입니다.
특별히 다른 일 없이 그대로 방향키가 호출되면 됩니다...
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(KeyEvent.ACTION_DOWN == event.getAction() && keyCode == KeyEvent.KEYCODE_DPAD_DOWN){
super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
그래서 기본 함수 형태로 했는데 아래방향 키가 안눌러지네요..
분명 keyDown()에 ACTION_DOWN 도 호출되고KEYCODE_DPAD_DOWN 도 호출 되었거든요
근데 왜 아래방향으로 키가 눌려지는 현상이 안일어날까요?
super.onKeyDown(keyCode, event);
이 함수 쓰는 것이 맞나요?
아님 제가 틀린건가요?
아래방향키가 KEYCODE_DPAD_DOWN 맞나요?
실제 아래방향키를 눌러보니까 로그가 안뜨네요? 아래방향키 keyCode가 어떻게 되나요?
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT)
//
else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT)
//
else if (keyCode == KeyEvent.KEYCODE_DPAD_UP)
//
else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN)
//
return super.onKeyDown(keyCode, event);
}
이렇게해서 사용중입니다. 참고하세요 4방향 버튼 다 잘눌려요
Android - WebView & JavaScript
안드로이드 java source
===================================================================================================
package com.example.webview;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import com.example.R;
public class WebViewDemo extends Activity {
WebView webview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Windows 의 속성 변경은 꼭 setContentView 이전에 해주어야 한다.
//설정사항 - no title, full screen, 가로/세로 고정, custom title
//내장 progress 지원(title 바에 위치됨)
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.webview_demo_main);
Button bt = (Button)findViewById(R.id.bt);
webview = (WebView)findViewById(R.id.webview);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// javascript function call
webview.loadUrl("javascript
}
});
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true);
// flash 지원하려면
//settings.setPluginsEnabled(true);
// javascript에게 공개할 클래스와 그 클래스의 공개명칭
webview.addJavascriptInterface(new JavascriptInterfaceTest(),"android");
webview.loadUrl("http://");
//webview의 유저 이벤트
webview.setWebViewClient(new WebViewClient(){
// 유저가 클릭하는 순간의 링크 이벤트, 사용자가 추가적인 데이터를 넣으려 할 때도 쓰임
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
Log.d("maluchi", "url: "+url);
view.loadUrl("http://m.naver.com");
return true;
//return super.shouldOverrideUrlLoading(view, url);
}
});
webview.setWebChromeClient(new MyWebChromeClient());
}
//key event 처리, onKeyUp/Down
//만약 back key만 처리하겠다면 onBackPressed 메서드를 이용할 수 있다.
//하지만 둘을 같이 선언 할 수 없다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack())
{
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
// javascript에서는 java 에서 공개한 객체의 메서드만 호출한다.
// javascript에게 공개할 클래스
public class JavascriptInterfaceTest{
public void vibration()
{
Vibrator vib = (Vibrator)WebViewDemo.this.getSystemService(Context.VIBRATOR_SERVICE);
vib.vibrate(500);
//vib.vibrate(new long[]{1000,1000,1000}, 0);
}
}
// 브라우저 자체의 이벤트 핸들러 클래스
public class MyWebChromeClient extends WebChromeClient
{
// 페이지 로딩 상태 변화시 호출, 수시로 호출된다.
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
// 모든 Activity는 자체 Progress를 가지고 있다.
WebViewDemo.this.setProgress(newProgress*100); // 값의 차이가 100차이라서 곱함
//super.onProgressChanged(view, newProgress);
}
}
}
xml 레이아웃
===================================================================================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
<Button
android:id="@+id/bt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Call JavaScript"
/>
</LinearLayout>
test html
===================================================================================================
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=euc-kr">
<script language="javascript">
function vibration(){
// javascript->java method
window.android.vibration();
}
function fromApp()
{
// java method -> javascript
alert('call to javascript');
}
</script>
<title>안드로이드 데모 - 자바스크립트 호출페이지</title>
</head>
<body>
<h2>WebView Test</h2>
<br />
<br />
<a href="http://www.google.com">go to google</a>
<br />
<br />
<input type="button" value="vibrate" onClick="javascript
</body>
</html>
Keyboard 이벤트 onkeydown, onkeyup, onkeypress - 키보드누를시, 키보드놓을시, 출력시
http://roydest.tistory.com/entry/Keyboard-%EC%9D%B4%EB%B2%A4%ED%8A%B8-onkeydown-onkeyup-onkeypress
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <!-- 현재 작성하고 있는 파일은 UTF-8 DOS파일입니다.-->
- <html xmlns="http://www.w3.org/1999/xhtml" lang="ko">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- </head>
- <body>
- <div id="ex_js_syntax">
- <script type="text/javascript" language="javascript">
- <!--
- /* Keyboard Events onkeydown onkeyup onkeypress */
- function onkeydown_event(){
- /* onkeydown 이벤트 */
- alert("onkeydown 실행되였어요");
- }
- function onkeyup_event(){
- /* onkeyup 이벤트 */
- alert("onkeyup 실행되였어요");
- }
- function onkeypress_event(){
- /* onkeypress 영문일때만 실행됨 */
- alert("onkeypress 실행되였어요");
- }
- //-->
- </script>
- <form name="input_type" id="input_type" method="post" >
- <!-- 예제 박스에선 안됨 => form태그안에 form태그있으면 지워짐~ㅠ.ㅠ -->
- <input type="text" value="키보드 누를때" onkeydown="onkeydown_event();">
- <br />
- <input type="text" value="키보드 놓을때" onkeyup="onkeyup_event();">
- <br />
- <input type="text" value="실제 글자가 써질때" onkeypress="onkeypress_event();">
- <br />
- </form>
- </div>
- </body>
- </html>
--------------------------------------------------------------------------------------------
위 소스 예제 보기
onkeydown, onkeyup, onkeypress
onkeydown- 키보드 누를때 이벤트가 발생합니다.
onkeyup- 키보드 놓을때 이벤트가 발생합니다.
onkeypress- 키보드 누른 문자가 출력시 이벤트가 발생합니다.
출처 & 인용 - http://www.w3schools.com/
'차근차근 > Android' 카테고리의 다른 글
webview 특정상황에 뒤로가기버튼 먹통. 귀찮아정말 (0) | 2014.11.17 |
---|---|
android - WebView 사용 하기 (0) | 2014.11.13 |
안드로이드 웹뷰 백 버튼 (0) | 2014.11.13 |
onbackpressed onkeydown (0) | 2014.11.13 |
sharedPreferences (0) | 2014.10.28 |
'차근차근/Android'의 다른글
- 현재글onKeyDown()이벤트