'프로그래밍'에 해당되는 글 158건

  1. 2015.07.02 android-support-v7-appcompat 라이브러리로 쓸 때 주의사항
  2. 2015.05.05 [android] style을 바꾸고 갑자기 EditText Hint가 보이지 않을 때
  3. 2015.04.08 [Android] jar파일이 아닌 프로젝트를 lib로 쓸 때 주의사항
  4. 2015.04.08 [Android] 앱 실행 후 widget에 오류가 있는 현상
  5. 2015.03.30 다이얼로그 띄울 때 edittext가 있는 경우 바로 키보드 올라오게 하는 법
  6. 2014.09.24 [Eclipse] Content Assist 빨리 뜨게 하기
  7. 2014.09.21 [Android] 이미지 CROP시 카메라만 안될 때
  8. 2014.08.04 [Android] Exception raised during rendering: java.lang.System.arraycopy
  9. 2014.07.04 [Android] 파일명 바꾸기
  10. 2014.06.25 [Android] 4.4 킷캣에서 이미지 첨부(CROP)가 안될 때 (3)
  11. 2014.06.20 [Android] XML 파일 생성하기
  12. 2014.05.25 [Android] Widget 최소 크기
  13. 2014.05.17 [Java] private, protected 등을 쓰는 이유 (1)
  14. 2014.05.08 [Android] pixel to dp / dp to pixel
  15. 2014.05.08 [Android] Drawable to Bitmap / Bitmap to Drawable (1)
  16. 2014.03.12 [Android] .query 로 distinct 넣기
  17. 2013.12.26 [Android] This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in (1)
  18. 2013.11.21 [Android] 시간 오전/오후로 표기하기 (8)
  19. 2013.11.16 [Android] 퍼센트 구하기 (8)
  20. 2013.10.08 [Android] 디렉토리를 zip파일로 압축하기 (6)
  21. 2013.10.08 [Android] xml의 password를 코드로 표현하기
  22. 2013.08.10 이클립스 최적화 하기 (10)
  23. 2013.08.09 [Android] Webview CPU 점유율 낮추기 (8)
  24. 2013.08.08 간편한 안드로이드 개발 환경 세팅 (10)
  25. 2013.07.31 [Android] Shape path too large to be rendered into a texture 해결법 (6)
  26. 2013.07.31 [Android] try catch문에서 Exception 로그 보기 (에러)
  27. 2013.07.25 [Android] 갤럭시S에서 EditText Hint가 안보이는 경우 (4)
  28. 2013.07.24 [Android] 이미지 반투명 처리하기 (7)
  29. 2013.07.15 [JAVA] 자릿수 만큼 0으로 채우기 String.Format() (2)
  30. 2013.07.04 [SELECT] SQLite NULL을 제외한 값 얻어내기 (10)
2015.07.02 20:45




android-support-v7-appcompat 프로젝트를 import 해서 


라이브러리로 쓰려고 하면 주의할 점 있습니다.


라이브러리로 쓰는 것 까진 좋은데


마지막에 APK 파일로 묶어버리면 Lint 에러가 납니다.


이 때 lint 에러 무시하고 apk로 묶어서 마켓에 올려버리면


앱이 죽는 무시무시한 결과나 나옵니다.


바로 value 폴더 안의 다른 언어설정을 때문인데요


res 폴더 안에 value-?? 해외코드들로 된 폴더들 다 지웁니다.


그래야 Lint에러가 안납니다.


Lint에러 난다고 설정에서 안보기 하지마세요 큰일납니다 ^^;


Posted by 그린블로그 DEV그린
2015.05.05 01:50

style을 바꾸고 갑자기 hint가 보이지 않을 때 당황스럽더군요.


hint버그는 


android:ellipsize="end"

android:singleLine="true"


로만 잡으면 되는줄 알고 있었던 찰나..


style을 변경하면 hint 글씨 색까지 바뀐다는 사실을 문득 깨닫고 


android:textColorHint="#888888"


이렇게 Hint에 색상을 주었더니 다시 잘 나오더군요.



Posted by 그린블로그 DEV그린
2015.04.08 18:25

jar파일 위주로 라이브러리를 구성한 프로젝트에 해당하는 케이스입니다.


프로젝트가 만약 android-support-v4.jar 을 따로 등록해놓았다면


다른 프로젝트를 lib로 사용할 수 없습니다. 거기서 충돌이 나기 때문입니다.


android-support-v7-appcompat를 lib로 사용할 때 자주 일어나며, 


다른 커스텀 프로젝트를 사용할 때도 일어나는 문제입니다.


해결법은 해당 프로젝트의 android-support-v4.jar을 지우면 됩니다. ^^



Posted by 그린블로그 DEV그린
2015.04.08 18:19

그래픽 레이아웃에서 작업 후


빌드하고 실행하면 이상하게 위젯이 안나올 때가 있습니다.


그 이유는 바로 VIew 위젯을 넣었기 때문


<View

     android:layout_width="fill_parent"

     android:layout_height="fill_parent"

     android:background="#000" />


뭐 때문인지는 모르지만 <View 이것만 들어가면 오류가 생기더군요.


그래픽 레이아웃에서는 잘 보여주면서..



Posted by 그린블로그 DEV그린
2015.03.30 23:35

커스텀 다이얼로그를 만들 때


edittext가 포커스되지 않는 현상이 있습니다.


그걸 잡을 때 사용되는 소스입니다.


InputMethodManager ime = null;

ime = (InputMethodManager)Settings.this.getSystemService(Context.INPUT_METHOD_SERVICE);

ime.showSoftInputFromInputMethod(((EditText)dialog.findViewById(R.id.edt)).getWindowToken(), InputMethodManager.SHOW_FORCED);

dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);



Posted by 그린블로그 DEV그린
2014.09.24 00:58

안녕하세요~ 네오입니다.


이클립스에서 Content Assist를 즐겨 쓰시는 분들 중의 고민 하나가


"아 내가 스펠링 치자마자 바로 튀어나올 수는 없나?" 라는 것입니다.


의외로 간단하게 변경 가능한데요~


Window - Preference - Java - Editor - Content Assist 를 클릭하신 후


밑의 스샷에 보이는 Auto activation delay (ms)의 기본값이 200으로 설정되어 있는데


한 10정도로만 놓고 Apply 누르신 후 개발하시면 번개같이 뜬답니다 ㅎㅎ




Posted by 그린블로그 DEV그린
2014.09.21 21:02



오늘은 이미지 CROP 소스로 작업하다 겪은 해프닝 때문에 포스팅하네요.


작업하던중 갤럭시노트3에서는 잘되던 CROP이 LG G프로에서는 카메라에서 팅기는 문제가 발견되었습니다.


leaked window com.android.internal.policy.impl.PhoneWindow dialog.show


이런 에러문구가 뜨길래 아 쓰레드에서 UI 작업만 고쳐주면 되겠구나~ 하고


쓰레드를 물려주었지만 이번엔 로그조차 나오지 않고 팅겼죠.



(대략 이 때의 멘탈)


로그 찍고, 디버그 하고 이러저러 삽질을 하다보니


이게 카메라에서 앱으로 돌아올 때 가로에서 세로로 바뀔 때 onCreate를 호출하기 때문이라는 걸 


깨닫게 되었습니다. 웃긴건 이 현상은 단말기마다 다르다는 것도요.


예를 들어, 갤럭시노트3, G3, 심지어 구형 베가레이서에서도 잘 되다가


G프로, 노트2, 갤럭시S에서는 안되는 문제였죠.


결론은 


android:configChanges="orientation|screenSize"


이걸 AndroidManifest.xml에 있는 해당 Activity에 설정해줘야 한다는 겁니다.


처음엔 


android:configChanges="orientation"


이렇게만 붙였는데 안되는겁니다.



히익..!


이게 뭐지?! 왜 안되지?


순간 제가 알고있는 지식이 잘못된 건가 혼돈이 왔고



시무룩 상태에 빠져들었으나


screenSize


요거 하나 같다붙이니까 거짓말 같이 잘 되더군요.


하.. 삽질의 하루였습니다.


Posted by 그린블로그 DEV그린
2014.08.04 00:25

프로젝트를 4.4W로 맞추고 부터 Graphical Layout이 안보이는 현상이 발생합니다.


이런 경우, rendering layout in eclipse의 설정을 API19로 맞추면 다시 보이게 됩니다.


왜그런지는 잘 모르겠네요~ ^^


Posted by 그린블로그 DEV그린
2014.07.04 00:32
프로그래밍중 파일명을 바꿔야 할 때가 있습니다.

A.renameTo(B)


이렇게 A에서 B로 바꾸겠다는 명령을 renameTo로 간단하게 할 수 있습니다.


자바(Java)식 코딩은 많으므로 안드로이드(Android)식으로 만들어 봤습니다. ^^


File filePre = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/폴더명"바꾸기전이름);

File fileNow = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/폴더명"바꿀이름);

                                           

if(filePre.renameTo(fileNow)){

           Toast.makeText(getApplicationContext(), "변경 성공", Toast.LENGTH_SHORT).show();

}else{

           Toast.makeText(getApplicationContext(), "변경 실패", Toast.LENGTH_SHORT).show();

}



Posted by 그린블로그 DEV그린
2014.06.25 20:11

서비스 하던 앱의 사용자 분(G3 사용자)이 문득 이미지 첨부가 안된다고 메일을 주셨더라구요.


하여간 버전 업데이트가 되면 꼭 LG폰이 말썽입니다. 후..


그래서 알아보니 킷캣 버전부터는 Intent.ACTION_GET_CONTENT 가 안먹더라구요.


이유는 기존에 사용하던 ACTION_GET_CONTENT 


Storage access framework에 통합되었기 때문라고 하네요.


그런데 간단한 해결 방법이 있었습니다.


Intent.ACTION_GET_CONTENT  을 Intent.ACTION_PICK 으로 바꾸면 된다는 거.. ㅋㅋ


원래도 Intent.ACTION_PICK 을 써도 됐거든요.


이렇게 한줄 수정하니 다시 잘 되더군요. ^^


intent = new Intent(Intent.ACTION_PICK ,      

android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);


Posted by 그린블로그 DEV그린
2014.06.20 17:00


package com.XmlFileCreator;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;


import org.xmlpull.v1.XmlSerializer;


import android.app.Activity;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.util.Xml;

import android.widget.TextView;


public class XmlFileCreator extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //create a new file called "new.xml" in the SD card

        File newxmlfile = new File(Environment.getExternalStorageDirectory()+"/new.xml");

        try{

                newxmlfile.createNewFile();

        }catch(IOException e){

                Log.e("IOException", "exception in createNewFile() method");

        }

        //we have to bind the new file with a FileOutputStream

        FileOutputStream fileos = null;        

        try{

                fileos = new FileOutputStream(newxmlfile);

        }catch(FileNotFoundException e){

                Log.e("FileNotFoundException", "can't create FileOutputStream");

        }

        //we create a XmlSerializer in order to write xml data

        XmlSerializer serializer = Xml.newSerializer();

        try {

                //we set the FileOutputStream as output for the serializer, using UTF-8 encoding

                        serializer.setOutput(fileos, "UTF-8");

                        //Write <?xml declaration with encoding (if encoding not null) and standalone flag (if standalone not null)

                        serializer.startDocument(null, Boolean.valueOf(true));

                        //set indentation option

                        serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);

                        //start a tag called "root"

                        serializer.startTag(null, "root");

                        //i indent code just to have a view similar to xml-tree

                                serializer.startTag(null, "child1");

                                serializer.endTag(null, "child1");

                               

                                serializer.startTag(null, "child2");

                                //set an attribute called "attribute" with a "value" for 

                                serializer.attribute(null, "attribute", "value");

                                serializer.endTag(null, "child2");

                       

                                serializer.startTag(null, "child3");

                                //write some text inside 

                                serializer.text("some text inside child3");

                                serializer.endTag(null, "child3");

                               

                        serializer.endTag(null, "root");

                        serializer.endDocument();

                        //write xml data into the FileOutputStream

                        serializer.flush();

                        //finally we close the file stream

                        fileos.close();

                       

                TextView tv = (TextView)this.findViewById(R.id.result);

                        tv.setText("file has been created on SD card");

                } catch (Exception e) {

                        Log.e("Exception","error occurred while creating xml file");

                }

    }

} 


결과는 다음과 같습니다.


<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>

<root>

  <child1 />

  <child2 attribute="value" />

  <child3>some text inside child3</child3>

</root>


출처 : http://www.anddev.org/write_a_simple_xml_file_in_the_sd_card_using_xmlserializer-t8350.html


Posted by 그린블로그 DEV그린
2014.05.25 22:45

안드로이드 위젯을 짤 때 


1x1, 2x2, 3x3 .. 이런 위젯들의 dp 값이 궁금하다면 아래 표를 참조하면 됩니다.


셀 크기

 DP 사이즈

1

 72dp

2

 146dp

3

 220dp

4

 294dp


위젯의 크기는 res - xml 폴더 안의 widget_provider.xml에 넣어주시면 됩니다.



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

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

    android:initialLayout="@layout/widget_2x2"

    android:minHeight="146dp"

    android:minWidth="146dp"

    android:updatePeriodMillis="100000" />

(2x2 위젯 사이즈인 경우)


Cell

4 X 1

320 x 100 

3 X 3

240 x 100

2 X 2

160 x 200



즉 가로 길이는 1 에 ==> 80세로 길이는 1 에 ==? 100

 가로 / 세로

 1

2

3

 1

 80 x 100 

 80 x 200 

 80  x 300

 80 x 400 

 2

 160 x 100

 160 x 200 

 160 x 300 

 160 x 400 

 3

 240 x 100

 240 x 200 

 240 x 300

 240 x 400 

 4

 320 x 100

 320 x 200 

 320 x 300 

 320 x 400 


이 크기는 세로모드일때의 크기이며 가로모드일때는

가로 길이 1 에 ==> 106 세로 길이 1 에 ==> 74



Posted by 그린블로그 DEV그린
2014.05.17 16:07


설계한 클래스를 혼자 사용하거나,

1회성으로 사용할 경우는 필요가 없습니다( 바람직하다고 생각지는 않지만 )

저는 private, protected 역시 const 와 쓰는 마찬가지인 이유로 쓴다고 생각합니다.

그런것들은 코드상에서 잠재적인 버그를 만들 수 있는 확률을 확실하게 줄여주며, 컴파일시에 잡을 수 있게 도와줍니다.


코드를 짤 때는 

"내가 만든 코드는 항상 누군가 보고 이용( 재활용 ) 될 수 있다 "

라는 생각을 갖고 해야합니다.


자신이 짠 코드를 이용하는 사람들이 항상 자신이 원하는대로

이용할 거라고 생각하지 마십시오.

자세한 메뉴얼도 도움이 되겠지만 해당 언어에서 제공하는

키워드를 이용하여 코드의 이용을 제한하는것이 효과적입니다.


그런면에서 private, protected, const 등등은 인터페이스, 자원 등을 단일화, 강제화 시킬 수 있으며 이러한 코딩 습관은 발생 가능 한 수 많은 버그의 경우의 수를 줄여 줍니다.


출처 : https://kldp.org/node/48605



[ class 의 경우 ]

public     : 모든 패키지에서 이 클래스를 참조할 수 있다.

private    : 자신을 포함한 클래스에서만 참조가능

protected : 자신을 포함하는 클래스에서 상속받은 클래스에서도 참조가능

default    : 동일 패키지 내에서 이 클래스를 참조할 수 있다.

 

[ 메소드의 경우 ]

public     : 이 클래스밖에서도 이 메소드를 참조할 수 있다.

private    : 이 클래스내에서만 참조가능

protected : 상속받은 클래스와 이 클래스내에서만 참조할 수 있다.

default    : 동일 패키지 내에서만 참조할 수 있다.



사실 private나 protected, default 접근자의 차이점은 제껴두고라도


코드를 짜면서 나는 정작 왜 이 접근자를 선언하고 있는가 생각할 때가 있었습니다.


어짜피 짜는거 걍 public이나 default로 통일하면 되는거 아니야? 라면서 말이죠.


윗글은 서핑하다 찾아낸 명답입니다. 


결과적으로 'private나 protected는 다른 코더를 위한 배려' 였다는 거죠 ^^



Posted by 그린블로그 DEV그린
2014.05.08 15:09

pixel과 dp를 자연스럽게 바꿀 수 있는 코드입니다.


예를 들어 이미지를 코드로 넣을 경우 매우 유용하게 사용될 것입니다. ^^


    /**

    * This method converts dp unit to equivalent pixels, depending on device density.

    *

    * @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels

    * @param context Context to get resources and device specific display metrics

    * @return A float value to represent px equivalent to dp depending on device density

    */

    public static float convertDpToPixel(float dp, Context context){

        Resources resources = context.getResources();

        DisplayMetrics metrics = resources.getDisplayMetrics();

        float px = dp * (metrics.densityDpi / 160f);

        return px;

    }

 

    /**

     * This method converts device specific pixels to density independent pixels.

     *

     * @param px A value in px (pixels) unit. Which we need to convert into db

     * @param context Context to get resources and device specific display metrics

     * @return A float value to represent dp equivalent to px value

     */

    public static float convertPixelsToDp(float px, Context context){

        Resources resources = context.getResources();

        DisplayMetrics metrics = resources.getDisplayMetrics();

        float dp = px / (metrics.densityDpi / 160f);

        return dp;

    }


출처 : http://stackoverflow.com/questions/4605527/converting-pixels-to-dp



Posted by 그린블로그 DEV그린
2014.05.08 14:59

개발하면서 Drawable과 Bitmap을 왔다갔다 할 경우가 있습니다.


이 둘을 자유 자재로 바꾸는 방법을 알아봅시다.


1. Bitmap to Drawable


 Drawable d = new BitmapDrawable(getResources(), bitmap);



2. Drawable to Bitmap


public static Bitmap drawableToBitmap (Drawable drawable) {

        if (drawable instanceof BitmapDrawable) {

            return ((BitmapDrawable)drawable).getBitmap();

        }

 

        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmap);

        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());

        drawable.draw(canvas);

 

        return bitmap;

    }



Posted by 그린블로그 DEV그린
2014.03.12 22:29

안드로이드 SQL은 따로 지원하는 API가 있습니다.


그래서 직접 다 쿼리를 치지 않아도 메소드로 대신 할 수 있지요.


 db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);


대충 이런 식으로 많이 짭니다.


그런데 어떤 컬럼이 중복되지 않게 SELECT하고 싶을 때 distinct를 넣어야 할 때가 있습니다.


안드로이드 API는 그것 또한 고려한 메소드를 제공합니다.


 db.query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);


위의 것과 동일하지만 여기서 새로 추가된 distinct의 값을 true로 주면 중복을 걸러내겠다는 말입니다.


limit에는 null을 주면 됩니다.



Posted by 그린블로그 DEV그린
2013.12.26 15:49

이클립스 Graphical layout에서 


This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in


이런 말이 뜨면서 안보이는 경우가 있습니다.


이럴땐 말그대로 ADT 업데이트를 해주어야 하는데요,


이클립스 Help - Install New SoftWare.. 를 클릭하신 후 


Work With에 https://dl-ssl.google.com/android/eclipse/ 를 입력하면 뜨는


Android Development Tools를 인스톨한 후 재실행하면 제대로 보입니다.



Posted by 그린블로그 DEV그린
2013.11.21 22:22

시간을 표현할 때는 HH:mm:ss 를 많이 쓰는데요,


때에 따라 AM/PM, 오전/오후로 표기해주어야 할 때가 있습니다.


그럴 땐 다음과 같은 방식으로 코딩합니다. ^^


 Calendar now = Calendar.getInstance();

 now.setTime(StringUtil.parseDate(row.getDate()));

 int isAMorPM = now.get(Calendar.AM_PM);

 switch (isAMorPM) {

 case Calendar.AM:

 ((TextView)dialog.findViewById(R.id.title)).setText("오 "+now.get(Calendar.HOUR)+" "+now.get(Calendar.MINUTE)+"");

    break;

 case Calendar.PM:

 ((TextView)dialog.findViewById(R.id.title)).setText("오후 "+now.get(Calendar.HOUR)+" "+now.get(Calendar.MINUTE)+"");

    break;

 }


참 쉽죠?


Posted by 그린블로그 DEV그린
2013.11.16 01:02

일반적으로 퍼센트 구하는 공식은 다음과 같습니다.


예 : 1000에서 100은 몇 %인가?

공식 : (일부값 ÷ 전체값) ×100

풀이 : (100 ÷1000) ×100 = 10%


이것을 자바프로그래밍에 도입해봤을 때는 int 값으로 계산하겠죠.


그런데 이렇게 하면 값이 0이 나올 때가 나오고 맙니다.


항상 100 나누기 1000이 아니고 356 나누기 6578 같은 경우도 있으니까요.


그럴 때는 적절하게 double을 써주어야 하는데요~ 이 방법이 가장 좋은 방법 같습니다.


percent = (int)( (double)part/ (double)all * 100.0 );

//percent는 전체값에서 일부값의 퍼센트를 나타낸다. 


Posted by 그린블로그 DEV그린
2013.10.08 19:21

안드로이드의 unzip 예제는 많지만 zipping 예제는 찾기가 어렵죠!


그래서 간단한 zip 압축 만들기 방법을 직접 씁니다. ^^


1. 

일단 Zip4j 사이트로 들어가서 jar 파일을 받습니다.


http://www.lingala.net/zip4j/download.php




2. 

그리고 프로젝트의 lib 폴더에 다운받은 jar파일을 넣어줍니다. 

이 시점에선 zip4j_1.3.1.jar가 최신이네요. ^^ 

귀찮으시다면 첨부한 파일을 받으시고..~


zip4j_1.3.1.jar



3. 

Properties - Libraries 에서 Add JARs... 를 클릭하여 zip4j_1.3.1.jar을 등록한 후 



Order and Export에서 체크박스 클릭 후 Clean을 해주십니다.




4. 

Environment.getExternalStorageDirectory().getAbsolutePath()는 sdcard를 의미합니다.

즉 이 코드는 압축할폴더이름을 압축하여 압축할파일이름.zip으로 만드는 코드입니다.

라이브러리를 이용하니 간단하게 압축 끝~ 참 쉽죠? ^^


 try {

 ZipFile zipfile = new ZipFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "압축할파일이름.zip");

 ZipParameters parameters = new ZipParameters();

 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);

 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

 zipfile.addFolder(Environment.getExternalStorageDirectory().getAbsolutePath() + "/압축할폴더이름", parameters);

 } catch (Exception e) {

  // TODO: handle exception

 }



PS.

제가 압축을 사용한 이유는 

4.3부터 gmail로 이미지 다중첨부 시 알 수 없는 퍼미션 에러가 났기 때문입니다. ㅡㅜ

혹시 해결하신 분 댓글좀 남겨주세요~ ㅎㅎ

근데 압축 라이브러리를 사용하고 보니 이게 훨씬 간단하고 유저입장에서도 편하겠더군요. ^^

앞으론 다중 이미지 첨부보단 zip파일로 하나로 묶어보내는게 나아보입니다.



Posted by 그린블로그 DEV그린
2013.10.08 19:02

EditText에 password 모드를 주려면 어떻게 해야될까요?


안드로이드 xml에서는 password="true" 하나로 해되지만


한 xml을 여러 클래스에서 다른 용도로 쓰게 될 때는 어쩔 수 없이 해당 클래스에서만 따로 password모드를 부여해줄 수 밖에 없습니다.


그럴 땐 아래 코드를 사용해보세요!


 EditText edt = (EditText)findViewById(R.id.edt);

 PasswordTransformationMethod pass = new PasswordTransformationMethod();

 edt.setTransformationMethod(pass);



Posted by 그린블로그 DEV그린
2013.08.10 16:59

http://www.slipp.net/wiki/pages/viewpage.action?pageId=5177633


이 사이트가 망하지 않는 한 이클립스의 최적화 정보를 손쉽게 볼 수 있답니다.




이클립스의 heap status 정보를 보려면


Window - Preference 에 가셔서


Show heap status에 체크해주시면 




이렇게 이클립스 오른쪽 하단에 heap status가 뜬답니다.


꽉찬다 싶으면 휴지통 아이콘을 클릭해주시면 알아서 정리가 됩니다.


근데 사실 그렇게 효과가 있는지는 모르겠군요 ㅎㅎ


Posted by 그린블로그 DEV그린
2013.08.09 12:23

Webview는 꾸준히 CPU를 좀먹는 위젯인데요,


그나마 쉽게 CPU를 낮출 수 있는 방법이있습니다.


onResume 에서 로드하고


onPause 에서 clearHistory(); 와 loadUrl(""); 을 선언해주고


작업관리자의 CPU 점유율을 확인해보면 확연하게 줄어든 CPU점유량을 확인해 보실 수 있습니다.

Posted by 그린블로그 DEV그린
2013.08.08 14:52
요즘엔 이클립스랑 Android SDK를 한번에 묶어 주는군요~

http://developer.android.com/sdk/index.html


이곳에서 SDK를 받아줍니다.



Download the SDK 버튼 클릭!



자신의 OS에 맞는 bit를 체크해주시고


Download the SDK ADT Bundel for WIndows 버튼 클릭!


다운받은 .zip 파일을 C: 아무 폴더를 만드셔서 압축을 풉니다.


저같은 경우는 C:\Android 에 그냥 깔아버렸습니다 ㅎㅎ


이제 ecliplse 폴더에서 ecliplse.exe 만 실행해주시면


안드로이드 SDK와 개발자 툴이 설치되어있는 이클립스를 실행하게 됩니다.



이 이클립스는 아이콘이 안드로이드 전용입니다 ㅎㅎ


멋지네요~


예전에는 이클립스 따로 안드로이드 SDK 따로 설치 했었는데


이젠 훨씬 간편하게 개발환경 세팅이 가능해졌습니다. ^^


Posted by 그린블로그 DEV그린
2013.07.31 20:49
Shape path too large to be rendered into a texture


코딩하다 주황색으로 이런 에러가 뜨길래 찾아보니


AndroidManifest.xml의 해당 액티비티에 


android:hardwareAccelerated="false"


이 옵션을 추가해줘야 하더군요. 다만 이걸 추가했을 때 bitmap draw형식이면 뭔가 잔상이 남는 버그가 있네요.


그건 좀 더 연구해봐야겠습니다..

Posted by 그린블로그 DEV그린
2013.07.31 18:19

try catch 문에서 Exception이 걸렸을 때 로그캣으로 찍어보는 방법입니다.


 try { 

   //todo          

 } catch (Exception e) {

    StringWriter sw = new StringWriter();

    e.printStackTrace(new PrintWriter(sw));

    String exceptionAsStrting = sw.toString();

    Log.e("GODK", exceptionAsStrting);

    e.printStackTrace();

 }


Posted by 그린블로그 DEV그린
2013.07.25 00:08

코딩을 하다가 갤럭시S에서만 setHint가 안먹히는 버그를 발견했습니다.


android:gravity="center" 와 android:hint 를 같이 쓰면 주로 안보이는 것 같더군요.



이 버그는 


android:ellipsize="end"


이 옵션을 함께 추가해주시면 수정됩니다.



참 이상한 버그였습니다.


Posted by 그린블로그 DEV그린
2013.07.24 17:02

ImageView를 반투명 처리하는 방법입니다.


코드는 매우 간단합니다.




XML에서 src에 선언했을 경우


 Drawable alpha = ((ImageView)findViewById(R.id.img)).getDrawable();

 alpha.setAlpha(50);



XML에서 background에 선언했을 경우


 Drawable alpha = ((ImageView)findViewById(R.id.img)).getBackground();

 alpha.setAlpha(50);






레이아웃을 반투명 처리할 경우 (주로 도움말 에서 배경을 반투명 처리할 때 사용합니다)


 Paint paint = new Paint();

 paint.setColor(Color.BLACK);

 paint.setAlpha(70);

 ((RelativeLayout)findViewById(R.id.layout)).setBackgroundColor(paint.getColor());



Posted by 그린블로그 DEV그린
2013.07.15 21:49

일련번호를 표시할 때 자릿수를 정해서 세팅하는 방법입니다.


001, 002... 010 이런식으로 표현하고 싶을 때 아래 코드를 사용합니다.


 int serial = 3;

 String number = String.format("%03d", serial);

 Log.i("INFO""number : "+number);

Posted by 그린블로그 DEV그린
2013.07.04 16:41

저번 글에선 Sqlite에서 NULL값을 걸러내는 방법을 알아보았는데요~


이번엔 NULL값을 제외한 값들을 추려내는 방법을 알아봅시다.


B테이블A컬럼의 값이 NULL이 아닌 것만 SELECT 하려면 아래와 같은 쿼리를 날립니다.


 SELECT A컬럼 FROM B테이블 WHERE NOT A컬럼 is NULL;


이것도 참~ 쉽죠? :)

Posted by 그린블로그 DEV그린