2013년 11월 6일 수요일

[AnDrOiD] String Format

strings.xml
MSG : %1$s, %2$d

java source
String getMsg = getResources().getString(R.string.testMessage);

String resultStr = String.format(getMsg, "test", 12345);
TextView txtMsg = (TextView) findViewById(R.id.txtMsg);
txtMsg.setText(resultStr);

[AnDrOiD] 버튼 이벤트 처리



버튼 처리 첫번째
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        findViewById(R.id.btnTest).setOnClickListener(mClickListener);
        findViewById(R.id.btnTest2).setOnClickListener(mClickListener);
       
    }
   
    Button.OnClickListener mClickListener = new View.OnClickListener()
    {
      public void onClick(View v)
      {
           switch (v.getId())
           {
           case R.id.btnTest:
             Toast.makeText(getBaseContext(), "DDDDD", 0).show();
                break;
               
           case R.id.btnTest2:
             Toast.makeText(getBaseContext(), "EEEEE", 0).show();
               break;
           }
      }
    };


버튼 처리 두번째
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        Button btnTest = (Button)findViewById(R.id.btnTest);
       
        btnTest.setOnClickListener(new OnClickListener() {
   
        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
        Toast.makeText(getBaseContext(), "RRRRRRR", 0).show();
       }
    });
       
  }


버튼 처리 세번째
레이아웃 XML 파일내용
<Button
        android:id="@+id/btnTest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/btnMSG_01"
        android:onClick="testMethod"
/>


자바 코드 내용
public void testMethod(View v){
   Toast.makeText(getBaseContext(), "GGGGGGG", 0).show();
}

2013년 11월 3일 일요일

[EtC] Tomcat 7 설정


server.xml 편집

<connector connectiontimeout="20000" 
           edirectport="8443"
           port="80"
           protocol="HTTP/1.1"
           uriencoding="UTF-8"
           compression="on"
           compressionMinSize="2048"
           compressableMimeType="text/plain,text/html,text/xml,application/xhtml+xml,application/xml,application/rss+xml,text/css,application/javascript,application/x-javascript,audio/midi,image/png,image/gifContent-Transfer-Encoding:binary">
</connector>
get 방식으로 전달 되는 한글이 깨지는 경우 위와 같이 URIEncoding="UTF-8" 을 추가 하도록 한다.

2013년 10월 30일 수요일

[EtC] 여기서 명령 창 열기



Shift + 마우스 오른쪽 버튼을 클릭 하면, 위 그림과 같이 "여기서 명령 창 열기" 메뉴가

나타 난다. 들리는 소문에 의하면, Windows 7 부터 추가된 기능이라고 한다. 

2013년 10월 29일 화요일

[AnDrOiD]WebChromeClient 에서 alert

package com.example.androidexam07;

import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.os.Message;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends Activity {

 WebView webView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  
  // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  // 가로 고정은 AndroidManifest.xml 에서 설정 할 것.

  webView = (WebView) findViewById(R.id.webView);

  webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); // 캐쉬 사용 안함
  
  webView.getSettings().setJavaScriptEnabled(true); // 자바스크립트 사용 여부

  webView.getSettings().setSupportMultipleWindows(true); // 멀티플 윈도우

  /*
   * webView.getSettings().setSaveFormData(false); // 비밀번호저장 사용 안함
   * webView.getSettings().setSavePassword(false); // 폼 데이터 저장(자동완성) 사용 안함
   * webView.getSettings().setBuiltInZoomControls(false); // 멀티줌 사용 안함
   * webView.getSettings().setSupportZoom(false); // 줌 사용 안함
   *
   * webView.setVerticalScrollBarEnabled(false); // 세로 스크롤바 사용 안함
   * webView.setHorizontalScrollBarEnabled(false); // 가로 스크롤바 사용 안함
   */

  webView.setWebViewClient(new webViewClient());
  webView.setWebChromeClient(new webViewChromeClient());

  webView.loadUrl("http://192.168.0.16/helloWeb/test.jsp");

 }

 
 
 /**
  * 프로그램 종료시
  * */
 @Override
 protected void onDestroy() {
  // TODO Auto-generated method stub
  
  super.onDestroy();
  
  webView.clearCache(true); // 웹뷰 캐시 삭제
  webView.destroy();
  webView = null;
  
  clearWebViewCache(null); // 웹뷰 캐시 삭제(전체)
  
  android.os.Process.killProcess(android.os.Process.myPid()); // pid kill
 }

 
 /**
  *  웹뷰 의 캐시 삭제
  * */
 private void clearWebViewCache(java.io.File dir){
  if(dir == null){
   dir = getCacheDir();
  }
  if(dir == null){
   return;
  }
  
  java.io.File[] content = dir.listFiles();
  
  try{
   for(int i=0; i<content.length; i++){
    if(content[i].isDirectory()){
     clearWebViewCache(content[i]);
    }else{
     content[i].delete();
    }
   }
  }catch(Exception e){
   e.printStackTrace();
  }
 }
 
 /**
  * '뒤로가기' 하드웨어 버튼 눌렀을 경우
  * */
 @Override
 public void onBackPressed() {
  // TODO Auto-generated method stub

  if(webView.canGoBack()){
   webView.goBack();
  }else{
   Toast.makeText(getBaseContext(), "프로그램을 종료 합니다.", Toast.LENGTH_SHORT).show();
   super.onBackPressed();
  }
 }
 
 /**
  * WebViewClient 상속
  * */
 private class webViewClient extends WebViewClient {

  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   // TODO Auto-generated method stub
   // return super.shouldOverrideUrlLoading(view, url);
   view.loadUrl(url);
   return true;
  }

 }
 
 
 /**
  * WebChromeClient 상속
  * */
 private class webViewChromeClient extends WebChromeClient {

  @Override
  public boolean onCreateWindow(WebView view, boolean dialog,
    boolean userGesture, Message resultMsg) {
   // TODO Auto-generated method stub
   return super.onCreateWindow(view, dialog, userGesture, resultMsg);
  }

  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  @Override
  public boolean onJsAlert(WebView view, String url, String message,
    final JsResult result) {

   // TODO Auto-generated method stub
   // return super.onJsAlert(view, url, message, result);
   new AlertDialog.Builder(view.getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
     .setTitle("알림")
     .setMessage(message)
     .setPositiveButton(android.R.string.ok,
       new AlertDialog.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
         result.confirm();
        }
       }).setCancelable(false).create().show();
   return true;
  }

  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  @Override
  public boolean onJsConfirm(WebView view, String url, String message,
    final JsResult result) {
   // TODO Auto-generated method stub
   // return super.onJsConfirm(view, url, message, result);
   new AlertDialog.Builder(view.getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
     .setTitle("알림")
     .setMessage(message)
     .setPositiveButton("예",
       new AlertDialog.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
         result.confirm();
        }
     })
     .setNegativeButton("아니오",
       new AlertDialog.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
         result.cancel();
        }
       }).setCancelable(false).create().show();
   return true;
  }
 }

}

[EtC] PL/SQL Developer 기본 설정


1. 연결 유지
tools -> Preferences -> Oracle -> Connection -> Check connection 체크

2. 연결 정보 저장
tools -> Preferences -> Oracle -> Logon History -> Definition -> Store with password 체크

3. 자동 선택 하여 쿼리 실행
tools -> Preferences -> Window Types -> SQL Window -> AutoSelect statement 체크
체크 하지 않는 경우 실행 하고자 하는 쿼리를 블럭 지정 후, F8 키를 눌러 실행 하여야 한다.체크 한 경우 F8 키로 쿼리 실행시 세미콜론(;) 단위로 실행 한다.

4. Null 값의 셀 색상 설정
tools -> Preferences -> Window Types -> SQL Window -> Null value cell color 에서 선택

5. 글꼴 설정
tools -> Preferences -> User Interface -> Fonts 에서 설정

2013년 10월 2일 수요일

[AnDrOiD] 가로 고정 설정

1. Using JAVA Code
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

2. Using AndroidManifest.xml
<activity android:label="@string/app_name" 
          android:name="com.example.androidexam07.MainActivity" 
          android:screenOrientation="landscape">
</activity>

2013년 9월 27일 금요일

[AnDrOiD] WebView 의 간단한 예제

public class MainActivity extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
     requestWindowFeature(Window.FEATURE_NO_TITLE); // 타이틀바 없음
     super.onCreate(savedInstanceState);

     setContentView(R.layout.activity_main);

     WebView webView = (WebView)findViewById(R.id.webView);

     webView.setWebViewClient(new WebViewClient());

     webView.clearCache(true); // 캐쉬 삭제

     webView.getSettings().setJavaScriptEnabled(true); // 자바스크립트 사용 여부

     /*
     webView.getSettings().setSaveFormData(false); // 비밀번호저장 사용 안함
     webView.getSettings().setSavePassword(false); // 폼 데이터 저장(자동완성) 사용 안함
     webView.getSettings().setBuiltInZoomControls(false); // 멀티줌 사용 안함
     webView.getSettings().setSupportZoom(false); // 줌 사용 안함

     webView.setVerticalScrollBarEnabled(false); // 세로 스크롤바 사용 안함
     webView.setHorizontalScrollBarEnabled(false); // 가로 스크롤바 사용 안함
     */

     webView.loadUrl("http://google.com");
}

     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
     // TODO Auto-generated method stub

     if(keyCode == KeyEvent.KEYCODE_BACK){
     if(webView.canGoBack()){
     webView.goBack();
     return false;
     } else{
     // else 인 경우 코드 추가
     }

     return super.onKeyDown(keyCode, event);
     }
}

[AnDrOiD] 타이틀바 안보이도록 설정

1. Using JAVA CODE
requestWindowFeature(Window.FEATURE_NO_TITLE);

2. Using AndroidManifast.xml
<activity android:name=".ActivityMain" android:theme="@android:style/Theme.NoTitleBar">

<activity android:name=".ActivityMain" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">