지식메모/안드로이드 Android

반응형

<EditText

android:inputType="number"

/>


이렇게 해주면 된다. 

number 대신에 phone 을 쓰면 전화번호만 입력할 수 있는 키보드가 뜬다.

뭐 사실상 둘 다 같은거라 볼 수도 있는 듯..




반응형
반응형

뭔가 특별한게 있을 줄 알았는데 별 거 없었다..


그냥 텍스트 뷰에서 하는 것 처럼 xml 에서


<EditText

android:text="텍스트"

/>


이렇게 해주면 입력칸에 hint가 아닌 진짜 텍스트가 초기상태부터 들어가 있다.




반응형
반응형




내가 참고한 블로그. 


http://theeye.pe.kr/entry/example-of-image-crop-with-camera-and-album-picker-on-android?category=18



트랙백은 뭐하는건지 모르겠다..

누가 알려주실 분..


그리고 위 소스는 정사각형으로 밖에 자르기가 안되는데 직사각형으로도 자르게 하려면


case PICK_FROM_CAMERA: { // 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다. // 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다. Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(mImageCaptureUri, "image/*"); intent.putExtra("outputX", 120); intent.putExtra("outputY", 130); intent.putExtra("aspectX", 1); //이걸 삭제한다 intent.putExtra("aspectY", 1); //이걸 삭제한다 intent.putExtra("scale", true); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_FROM_CAMERA); break; }


이 2개를 지워주면 자유자재로 자르기가 가능하다.
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
 X Y 좌표가 1:1 비율로 고정됐기 때문에 정사각형으로만 자르기가 되었던 것이었따. 




반응형
반응형



이미지를 캡쳐하는 어플을 만들었는데 저장하기 버튼을 누르면 캡쳐가 되는 기능이었다.


그런데 저장하기를 누르니까


java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
at android.graphics.Bitmap.createBitmap(Bitmap.java:585)
at com.project.app.ResultActivity.onClick(ResultActivity.java:860)

at android.view.View.performClick(View.java:3531)
at android.view.View$PerformClick.run(View.java:14125)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4449)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)


이런 에러가 나타났다. 그래서 해결책을 찾고 있었는데 다 recycle()이거나 BitmapFactory등등 뭔가 복잡했다.

내 실력으로는 잘 이해가 안갔다.

그러다 되게 간단해 보이는 방법을 찾았는데

AndroidManifest.xml 파일에


<application>

....

android:largeHeap="true"

....

</application>


어플리케이션 부분에 이 옵션을 주는 것이었다.  어플리케이션에 메모리할당을 더 크게 늘려주는 옵션이라나... 

아무튼 적용해보니 에러가 발생하지 않았다.

감격 ㅠㅠ

물론 이게 100%해결책은 아니지만 가장 간단한 해결책이 되지 않을까 싶다.




반응형
반응형

버튼이 눌렸을때와 안 눌렸을때 각 버튼이미지를 프로젝트에 넣어주고

(res폴더 안에 있는 drawable-hdpi 등등 폴더안에)

res폴더에  drawable 폴더를 만들고 안에다가

눌림효과를 줄 xml 파일을 만들어 준다. ex) button_click.xml


그리고 그 안에 밑에 소스를 추가

 <?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">


 <item android:state_pressed="true" android:drawable="@drawable/after_button" />

<!--   눌린 후 버튼이미지 파일명을 써준다.-->

 <!-- pressed -->  


 <item android:drawable="@drawable/before_button" /> 

<!--  눌리기 전 버튼이미지 파일명을 써준다..-->

 <!-- default -->

</selector>



위와 같이 해주고


이미지버튼 눌림효과를 줄 xml 파일로 가서 이미지버튼 부분에 

 android:background="@drawable/button_click"

이걸 추가해준다. button_click 은 아까 drawable 폴더 안에 만들어둔 xml 파일명이다.


 <ImageButton

        android:id="@+id/button_custom"

        android:layout_width="100sp"

        android:layout_height="wrap_content"

        android:layout_alignParentBottom="true"

        android:layout_centerHorizontal="true"

        android:layout_marginBottom="143dp"

        android:background="@drawable/button_click" />


이렇게 하면 눌림효과가 만들어진다.





반응형
반응형

public class MainActivity extends Activity{ 

다음에 삽입해주면 끝


private static final int MSG_TIMER_EXPIRED = 1;

	

    private static final int BACKEY_TIMEOUT = 2000;



    private boolean mIsBackKeyPressed = false;



    private long mCurrentTimeInMillis = 0;

    @Override 

    public void onBackPressed() { 

        if(mIsBackKeyPressed == false){ 

            mIsBackKeyPressed = true; 

              

            mCurrentTimeInMillis = Calendar.getInstance().getTimeInMillis(); 

              

            Toast.makeText(this, "뒤로 버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show(); 

            startTimer(); 

        } else { 

            mIsBackKeyPressed = false; 

              

            if(Calendar.getInstance().getTimeInMillis() <= (mCurrentTimeInMillis + (BACKEY_TIMEOUT))){ 

                finish(); 

            } 

        } 

    } 

      

    private void startTimer(){ 

        mTimerHander.sendEmptyMessageDelayed(MSG_TIMER_EXPIRED, BACKEY_TIMEOUT); 

    } 

      

    private Handler mTimerHander = new Handler(){ 

        public void handleMessage(Message msg){ 

            switch(msg.what){ 

                case MSG_TIMER_EXPIRED: 

                { 

                    mIsBackKeyPressed = false; 

                } 

            break; 

            } 

        } 

    };






반응형
반응형



사용자로부터 숫자를 입력 받을때 그 값을 검사하고 싶을때 사용한다.

예를 들면 1부터 5까지만 입력을 받고 싶다면 사용자가 5 보다 큰 수를 입력했을때 

값을 초기화 해버리면서 토스트메세지를 즉시 띄우게 된다.


EditText et=(EditText)findViewById(R.id.num); //해당 에디트텍스트 선언

et.addTextChangedListener(new TextWatcher() {

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

// TODO Auto-generated method stub

if(s.toString().length() > 0){ //문자열s의 길이가 0보다 크면

if(Integer.parseInt(s.toString()) > 5){ //문자열s를 int형으로 파싱해서 5보다 크면

et.setText(null);  //에디트텍스트 값을 null로 초기화 해버리고

Toast.makeText(getApplicationContext(), "1부터 5까지만 입력해주세요", Toast.LENGTH_LONG).show();

//토스트메세지를 띄운다.

}

}

}



EditText et=(EditText)findViewById(R.id.num); //해당 에디트텍스트 선언

et.addTextChangedListener(new TextWatcher() {			

@Override

	public void onTextChanged(CharSequence s, int start, int before, int count) {

	// TODO Auto-generated method stub

	if(s.toString().length() > 0){ //문자열s의 길이가 0보다 크면

	if(Integer.parseInt(s.toString()) > 5){ //문자열s를 int형으로 파싱해서 5보다 크면

	et.setText(null);  //에디트텍스트 값을 null로 초기화 해버리고

	Toast.makeText(getApplicationContext(), "1부터 5까지만 입력해주세요", Toast.LENGTH_LONG).show();

//토스트메세지를 띄운다.

		}

	}

}


반응형
반응형

배경이 어두운 색이라면 


에디트텍스트 입력할때 색깔이 비슷해서 알아보기 어렵다. 그래서 색깔을 바꿔줄 필요가 있는데 그 방법은


출처:http://sungho0459.blog.me/40179645913


 <EditText

    android:id="@+id/etRendererTextBody"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:padding="5dp"

    android:textAppearance="?android:attr/textAppearanceMedium"

    android:textColor="#ffFF6000" 

    android:background="#ffffffff"

    android:textCursorDrawable="@null"/>


 <EditText

                                android:id="@+id/etRendererTextBody"

                                android:layout_width="fill_parent"

                                android:layout_height="wrap_content"

                                android:padding="5dp"

                                android:textAppearance="?android:attr/textAppearanceMedium"

                                android:textColor="#ffFF6000" 

                                android:background="#ffffffff"

                                android:textCursorDrawable="@null"/>


android:textCursorDrawable속성값을 @null로 주고

android:textColor속성값을 부여하게 되면 textColor와 같은 색깔로 커서가 깜빡이게 됨

[출처] android EditText 커서 색깔|작성자 에몬



커서색깔은 물론 쓰여지는 글씨 색깔도 바뀐다.




반응형

+ Recent posts