이클립스 콘솔에서 한글이 깨지는 경우가 있다

예를 들어 Scanner로 입력을 받았을때

 

그것의 대처법이다

 

이클립스 설치 폴더에서

eclipse.ini 파일을 열어주고,

맨 아랫줄에

-Dfile.encoding=UTF-8

를 추가해 주면 된다

 

물론 이클립스 자체가 영어권 프로그램이므로

한글로 콘솔 입력을 받는것은 추천하지 않는다.

이것 이외에도 각종 에러가 많기 때문

 

Posted by 안드로메다에서 온 프로그래머

3축 자이로 센서보드(Triple-Axis Digital-Output Gyro ITG-3200 Breakout)

아두이노 1.01Ver이상 예제코드

 

Gyro.ino

 

아트로봇사의 코드를 오류수정한 버전

'개발자 > 미분류' 카테고리의 다른 글

클릭해서 만드는 마테리얼 아이콘  (0) 2016.05.19
3축 자이로 센서보드 예제  (0) 2013.12.06
JSON을 알아봅시다  (0) 2013.07.15
Posted by 안드로메다에서 온 프로그래머

버튼 객체에 setBackgroundDrawable을 해준다

그리고 드로위블 객제를 만들어서 그 안에 넣어준다

 

onbutton.setBackgroundDrawable(getResources().getDrawable(R.drawable.asd2));

'개발자 > Arduino' 카테고리의 다른 글

안드로이드 버튼의 배경을 실행 도중 바꾸는 방법  (0) 2013.11.17
신묘한 브레드보드  (0) 2013.10.17
Posted by 안드로메다에서 온 프로그래머

간단한 회로를 구성하고 전력을 흘려보냈는데, 아무래도 회로가 자꾸만 이상 동작을 보였습니다.

회로도를 아무리 봐도 멀쩡하고, 브레드보드가 불량인가 하여 LED회로를 구성해 보았으나 정상 작동.

각 회로구간마다 전압 전류를 다르게 주며 일일히 체크하던 도중, 이상하게 270mA이상 전류가 흐르지 않는 지점을 발견했습니다.

브레브보드의 특정 라인이 300mA 이상의 전류를 받을 시 동작을 하지 않고 그 이하의 전류에서는 정상 동작하여, LED테스트는 통과했던 것이죠

이걸 어떻게 발견해... 참고로 포장 뜯은 새 브레드보드였습니다.

뭔가 억울한 기분(?) 으로 삽질기를 써 봅니다.

'개발자 > Arduino' 카테고리의 다른 글

안드로이드 버튼의 배경을 실행 도중 바꾸는 방법  (0) 2013.11.17
신묘한 브레드보드  (0) 2013.10.17
Posted by 안드로메다에서 온 프로그래머

자바에서 문자열 내의 특정 문자열을 찾아 바꾸고 싶은 경우가 있다


안녕하세요<P>?
안녕하세요?
로 바꾸고 싶다거나

안녕하세요 누구누구?
로 바꾸고 싶을 수 있다
그럴때 replaceAll을 사용하면 된다

String ss = "안녕하세요<P>?";
String str;
String name = "김길동";

str = ss.replaceAll("</P>","");
//안녕하세요?

str = ss.replaceAll("</P>",name);
//안녕하세요 김길동?

주의해야 할 점이 있다 .
 *,[,]등의 정규 표현식은 아래와 같이 입력해줘야 한다

 [ ] 로 감싸면 인식하는 것들

*  → [*]
+  → [+]
$  → [$]
|  → [|]
?  → [?]
 \\를 붙이면 인식하는 것들

( → \\(
) → \\)
{ → \\{
} → \\}
^ → \\^
[ → \\[
] → \\]

자바의 특수문자는 \를 사용하며
아래의 문자들은 그냥 사용해도 된다
< > ; : . , ~ ' ` ! @ # % &




Posted by 안드로메다에서 온 프로그래머

안드로이드 개발 중

어떤어떤 상황에 키보드를 숨기자..라는 경우가 있다


예를 들어 입력창 이외에 빈 화면을 클릭해 주면 키보드가 사라진다던지,

다른 화면으로 이동하면 사라진다던지.


이런 경우에는 아래의 키보드 숨기기 코드를 알맞게 넣어주면 된다


우선 키보드를 숨길 곳에서 import 해준다

import android.view.inputmethod.InputMethodManager;


그리고 인풋매니저를 선언해준다

private InputMethodManager ipm;

꼭 프라이빗일 필요는 없다


생성자에서 객체화해준다

ipm= (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);


이제 사용하면 된다

ipm.hideSoftInputFromWindow(가져갈 화면.getWindowToken(), 0);

여기서 가져갈 화면이란, 클릭한 곳을 넣어주면 된다

만약에 온리섬이나 액티비티 스타트 지점 등 막 시작된 지점에선 위 코드가 제대로 동작하지 않을 수 있다

또는 가져갈 화면이(포커스할 지점)없는 경우도 있다

그럴때는 위 소스 대신

ipm.toggleSoftInput( 0, 0 );

라는 소스를 써줘도 된다


그러니까 키보드가 떠있는데 특정 리니어 레이아웃 구역을 누를시 키보드가 사라지게 하고 싶다면

해당 리니어 레이아웃을 선언한뒤 객체로 만들어서,

해당 객체.setOnTouchListener(new OnTouchListener() { });

이렇게 온터치리스너 따위에다가 위의 코드를 넣어주면 된다


예제

import android.view.inputmethod.InputMethodManager;


private InputMethodManager ipm;

private LinearLayout lin;


ipm= (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

lin = (LinearLayout) findViewById(R.id.lin);


lin.setOnTouchListener(new OnTouchListener() {


ipm.hideSoftInputFromWindow(lin.getWindowToken(), 0);

//또는(위 코드가 동작하지 않는 곳이나 마땅히 포커스할 lin이없는 경우에는

//ipm.toggleSoftInput( 0, 0 );

//하지만 토글소프트 인풋의 경우, 키보드를 무조건 사라지게 하는게 아니라

//현재 상태의 반대로 만든다, 그러므로 무조건 사라지게 하고 싶다면 위 코드를 쓸것


});


이렇게 했는데 안되는 경우가 있다.

바로 온 크리에이트,리섬,스톱 중에 넣어주는 경우인데, 이럴때는 약간의 딜레이를 줘야 한다

   Timer timer = new Timer();

   timer.schedule(new TimerTask() {

       @Override

       public void run() {

           ipm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

           ipm.hideSoftInputFromWindow(포커스를줄객체명.getWindowToken(), 0);

            }

       }, 100);



자마린 - fragment OncreateView내에서 사용시 (InputMethodManager는 import해줘야함)

InputMethodManager manager = (InputMethodManager)this.Activity.GetSystemService(Context.InputMethodService);


rlayout.Touch += (s, e) => { manager.HideSoftInputFromWindow(rlayout.WindowToken, 0); };


그외상황

http://stackoverflow.com/questions/14991071/hide-keyboard-programmatically-in-monodroid





자마린- 메소드로 편하게 쓰기


1. 키보드 숨기기 메소드 추가

public void HideKeyboard(View view) {

   InputMethodManager manager = (InputMethodManager)GetSystemService(Activity.InputMethodService);

   manager.HideSoftInputFromWindow(view.WindowToken, 0);

}


mainLayout.Touch += (s, e) => { HideKeyboard((LinearLayout)s); };



Posted by 안드로메다에서 온 프로그래머

커스텀 리스트뷰 (listview) 새로고침(갱신)

커스텀 리스트뷰를 새로고침,그러니까 갱신을 하려고 아래와 같은 방법을 사용했다


Adaptername.clear();

Adaptername.remove(datavo);

listviewname.clearChoices();

Adaptername.notifyDataSetChanged();

Adaptername.notifyDataSetInvalidated();

HelloActivity.this.onRestart();

HelloActivity.this.reset();

listviewname.setAdapter(Adaptername);


결과적으로 어떻게 해야 하냐면


다 안된다


어탭터를

cusorAdapter를 사용하고

notifyDataSetChanged() 대신 changeCursor()을 사용해야 한다

API11부터 사용할 수 있다고 한다


결론  : 오늘은 하루종일 삽질을 했다


커서어댑터를 사용하지 않고 해결하는 방법

1.커스텀 리스트 뷰의 아답터에 데이터리스트를 연결하는 부분을 메소드로 만든다

2.리스트 뷰를 갱신해줘야 하는 경우에 해당 메소드를 사용한다

..이렇게 단순하게 해결할 수 있다. 대체 몇시간을 삽질한건지

괜히 notifyDataSetChanged 라는게 있으니까 그걸 사용해보고 싶어서 그랬는데,

커스텀 뷰에는 안되니까 이 글을 보신 분은 위처럼 단순하게 해결하면 된다. 

(삭제 구현시에는 해당 리스트 아이템을 remove해주는 방법은 있다)

프로그래머는 단순하게 생각해야 한다는걸 다시 깨달았다.


*리플로 인해 좀 더 간단하게 정리

리스트를 첫 초기화 시키는 부분을 메소드로 만들어

데이터가 들어오면 초기화를 다시 시킴.


Posted by 안드로메다에서 온 프로그래머

자바에서 String을 Int로 바꿔보고, 반대로도 바꿔봅시다.


//int To String
int i = 100;
String stringCase1 = String.valueOf(i); //방법 1, i가 null 일 시 null 리턴
String stringCase2 = Integer.toString(i); //방법 2, i가 null 일 시 NullPointerException발생

//String to int
String str = "100";
int intCase1 = Integer.parseInt(str); //방법1, 양수와 음수 모두 인식 가능
int intCase2 = Integer.valueOf(str); //방법2, 양수만 변환 가능(내부에 parseInt가 있음.)



Posted by 안드로메다에서 온 프로그래머

//array에 2013년1월1일 이 들어있습니다


String [] array = arrdate.split("년|월|일");

//arrdate에 들어있는 값을 , 년 월 일로 잘라 array[]에 넣습니다


  int year = Integer.parseInt(array[0]);

  int month = Integer.parseInt(array[1]);

  int day = Integer.parseInt(array[2]);

//array에 있는 값을 년,월,일에 대입해 줍니다


참 쉽죠?




Posted by 안드로메다에서 온 프로그래머
1. XML Layout에서 TextView 속성에 android:scrollbars="vertical" 을 추가해 줍니다.

2. Activity의 OnCreate에서 TextView를 초기화 한 후 아래와 같이 처리해줍니다
     textView.setMovementMethod(new ScrollingMovementMethod());

예외. TextView가 ScrollView 안에 포함되었을 경우에는 아래와 같이 처리해줘야 합니다
     textView.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event) {
        ScrollView.requestDisallowInterceptTouchEvent(true);
        //스크롤뷰가 텍스트뷰의 터치이벤트를 가져가지 못하게 처리
        return false;
        }

   });


Posted by 안드로메다에서 온 프로그래머