블로그 이미지
JoyfulLife

공지사항

최근에 받은 트랙백

글 보관함

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
import android.widget.AbsListView;

@Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        if (mIsLoading) {
            return;
        }
        switch (scrollState) {
        case SCROLL_STATE_IDLE:
            if (view.getLastVisiblePosition() >= mTotalItemCount - 1 && mTotalItemCount > 0) {
                if (getListView().getFooterViewsCount() == 1 && !mIsLoading) {
                    mIsLoading = true;
                    //setProgressBarIndeterminateVisibility(true);
                    mListFooter.setVisibility(View.VISIBLE);
                    Thread thread = new Thread(mLoadListItems);
                    thread.start();
                }
            }
            break;
        case SCROLL_STATE_TOUCH_SCROLL:
            break;
        case SCROLL_STATE_FLING:
            break;
        }
    }

andtweet 에서 뽑아온 것이다. SCROLL_STATE_IDLE 상태에서 하고 싶은 일을 해주면 된다.

신고

'안드로이드' 카테고리의 다른 글

Enable or not, BroadcastReceiver  (0) 2010.09.12
쉽게 Dialog 만들기..  (0) 2010.07.28
스크롤이 맨 아래에 갔을 때 이벤트 주는 법  (0) 2010.07.28
코드로 안드로이드 방향 설정  (0) 2010.07.24
OnTouch, Action_up  (1) 2010.07.24
http 통신  (2) 2010.07.22

코드로 안드로이드 방향 설정

2010.07.24 21:03 | Posted by JoyfulLife
2시간의 구글링 끝에 알아냈다.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

이렇게 해주면 된다.

setO .. 이런 식으로 찾다가 안되서 다른 방법으로 찾다가 허무하게 알아냈다.
원본주소->http://devlog.thoth.kr/?mid=blog&document_srl=4234704

내가 헤맨 방법은..
 
android:configChanges="orientation"

로 설정하는 방법이다.

이것은 방향이 바뀔때를 캐치한다.


@Override
    public void onConfigurationChanged(Configuration _newConfig) {

       
            _newConfig.orientation=Configuration.ORIENTATION_LANDSCAPE;
           
            super.onConfigurationChanged(_newConfig);

    }

이 소스 안에서 변경되었을 때 처리할 수 있다.

나는 저 안에서 변경이 될 때 방향 설정을 다시 해주면 될 것 같았다. 하지만 잘못된 것이었다.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

이 방법이 올바른 방법이었다.

이 소스를 사용하면 방향 설정이 고정이 된다.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTAIT);
로 하면 세로로 고정이 된다.

이북을 만들 때 좋을 것 같다. 성경뷰어 만들 때 추가 기능으로 업데이트를 할 것이다.


신고

'안드로이드' 카테고리의 다른 글

쉽게 Dialog 만들기..  (0) 2010.07.28
스크롤이 맨 아래에 갔을 때 이벤트 주는 법  (0) 2010.07.28
코드로 안드로이드 방향 설정  (0) 2010.07.24
OnTouch, Action_up  (1) 2010.07.24
http 통신  (2) 2010.07.22
단말기 화면 을 실시간으로 보자  (0) 2010.07.20
TAG 방향, 설정

OnTouch, Action_up

2010.07.24 15:19 | Posted by JoyfulLife
Action_down  은 잘 먹는데 Action_up 이 안 먹을 때 있다.
그 이유는....


return 때문에 그런다.

return false;  로 하면 action_up 이 안된다. 하지만 down은 잘된다.

return true; 로 하면 up도 잘 될 것이다.

그 이유를 생각해보자면 return false 를 하면 더 이상 touch 이벤트를 찾지를 않는다. 그래서 이벤트가 down까지만 찾고 리턴을 하고 만다. 하지만 return true; 를 하면 이벤트를 up까지도 찾는다.

return 이 ture, false 이냐를 잘 판단하는게 좋을 것 이다.

public boolean onTouchEvent(MotionEvent event)
    {
        int action = event.getAction();
        Log.i("TEST","action="+action);
        if(action == MotionEvent.ACTION_DOWN)
        {
            mBgColor=Color.parseColor(getResources().getString(R.color.black));
            invalidate();
            Log.i("TEST","down childview");
           
        }
        else if(action == MotionEvent.ACTION_UP)
        {
            mBgColor=Color.parseColor(getResources().getString(R.color.white));
            invalidate();
            Log.i("TEST","up childview");
        }
        return true;
    }
신고

'안드로이드' 카테고리의 다른 글

스크롤이 맨 아래에 갔을 때 이벤트 주는 법  (0) 2010.07.28
코드로 안드로이드 방향 설정  (0) 2010.07.24
OnTouch, Action_up  (1) 2010.07.24
http 통신  (2) 2010.07.22
단말기 화면 을 실시간으로 보자  (0) 2010.07.20
Bitmap, Recycle()  (1) 2010.07.11

http 통신

2010.07.22 21:26 | Posted by JoyfulLife
2개의 방법이 있다.
첫번째는 java.net 패키지를 이용하는 것이다.

두번째는 org.apache 패키지를 이용하는 것이다.

2개가 비슷해서 처음에는 좀 헷갈린다.

그래서 차이점에 대해서 오늘 배운 것을 정리해보겠다.

1. java.net 사용법
URL url = new URL(addr);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            if (conn != null) {
                conn.setConnectTimeout(10000);
                conn.setUseCaches(false);
                if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    BufferedReader br = new BufferedReader(
                            new InputStreamReader(conn.getInputStream()));
                    for (;;) {
                        String line = br.readLine();
                        if (line == null) break;
                        html.append(line + '\n');
                    }
                    br.close();
                }
                conn.disconnect();
            }

2.번째 org.apache 사용법
HttpGet httpget = new HttpGet(addr);
        DefaultHttpClient client = new DefaultHttpClient();
        StringBuilder html = new StringBuilder();
        try {
            HttpResponse response = client.execute(httpget);
            BufferedReader br = new BufferedReader(new
                    InputStreamReader(response.getEntity().getContent()));
            for (;;) {
                String line = br.readLine();
                if (line == null) break;
                html.append(line + '\n');
            }
            br.close();
        }


이 정도이다.

좀 다른 점은 thread를 사용할 때 apache 에서는 ResponseHanlder 를 등록할 수 있다는 것이다. html 소스를 모두 받고 나면 실행하는 핸들러이다.
public void run() {
            HttpGet get = new HttpGet(mAddr);
            DefaultHttpClient client = new DefaultHttpClient();
            try {
                client.execute(get,mResHandler);
            }
            catch (Exception e) {;}
        }

ResponseHandler<String> mResHandler = new ResponseHandler<String>() {
        public String handleResponse(HttpResponse response) {
            StringBuilder html = new StringBuilder();
            try {
                BufferedReader br = new BufferedReader(new
                        InputStreamReader(response.getEntity().getContent()));
                for (;;) {
                    String line = br.readLine();
                    if (line == null) break;
                    html.append(line + '\n');
                }
                br.close();

                Message message = mAfterDown.obtainMessage();
                Bundle bundle = new Bundle();
                bundle.putString("result", html.toString());
                message.setData(bundle);
                mAfterDown.sendMessage(message);
            } catch (Exception e) {;}
            return html.toString();
        }
    };

이 정도이다. client.execute(get,mResHandler);를 실행한후다 끝나면  handleResponse()를 실행한다.
 좀 이해하기 어려운 것은 response.getEntity().getContent() 부분이다.
도대체 getEntity()가 무엇인지 모르겠다.
신고

'안드로이드' 카테고리의 다른 글

코드로 안드로이드 방향 설정  (0) 2010.07.24
OnTouch, Action_up  (1) 2010.07.24
http 통신  (2) 2010.07.22
단말기 화면 을 실시간으로 보자  (0) 2010.07.20
Bitmap, Recycle()  (1) 2010.07.11
마켓 QR 코드 만들기  (1) 2010.07.08

단말기 화면 을 실시간으로 보자

2010.07.20 16:09 | Posted by JoyfulLife
http://androidhuman.tistory.com/entry/%EB%8B%A8%EB%A7%90%EA%B8%B0%EC%9D%98-%ED%99%94%EB%A9%B4%EC%9D%84-%EC%8B%A4%EC%8B%9C%EA%B0%84%EC%9C%BC%EB%A1%9C-%EC%BB%B4%ED%93%A8%ED%84%B0%EB%A1%9C-%EB%B3%B4%EB%A0%A4%EB%A9%B4-androidscreencast



<from 커니>

강의나 프리젠테이션 등을 할 때면 간혹 단말기의 화면을 실시간으로 컴퓨터 화면에 띄워야 할 경우가 있습니다.
저도 예전에 이게 필요했었는데.. 그 땐 못 찾았다가 어제 찾아보니 나오더군요. -_-;

androidscreencast 는 단말기의 화면을 컴퓨터에서 실시간으로 보여주며, 루팅된 단말기의 경우 컴퓨터쪽에서 직접 단말기를 제어하는 것도 가능합니다.

ADB 드라이버가 잡혀 있어야 하며, 실행을 위해서는 JRE가 필요합니다.


공식 사이트 주소는 http://code.google.com/p/androidscreencast/ 입니다~

신고

'안드로이드' 카테고리의 다른 글

OnTouch, Action_up  (1) 2010.07.24
http 통신  (2) 2010.07.22
단말기 화면 을 실시간으로 보자  (0) 2010.07.20
Bitmap, Recycle()  (1) 2010.07.11
마켓 QR 코드 만들기  (1) 2010.07.08
Tab을 사용면서 Title 변경하기..  (0) 2010.07.06

Bitmap, Recycle()

2010.07.11 21:19 | Posted by JoyfulLife
Bitmap을 가지고 작업을 많이 하다보니 메모리에 제한이 많이 걸렸다.

그래서 구글 오픈 소스에서는 어떻게 이런 문제를 해결하는지 찾아보았다.

구글에서 한 방법은 쓰지 않는 Bitmap 에는 recycle() 을 걸어 주었다.

나도 똑같이 해보니 잘 되었다.

나는 기본적으로 화면이 finish() 가 되면 그 안에서 쓰는 bitmap은 다 메모리로 환원이 될줄 알았다. 하지만 되지 않았다.

SurfaceView를 하나 생성하고 그 안에서 Bitmap을 꽤 많이 만들었다. 그것을 recycle() 로 해제를 시키지 않았다.

 구글 소스를 통해서 recycle()을 많이 쓴다는 것을 알고 안쓰는 bitmap 은 모두 recycle()을 걸었다. 그렇게 해주니 어느 정도 효과가 나타났다. 예전에는 큰 이미지를 로딩하면 메모리 없다고 죽었는데 이제는 죽지는 않는다.

 앞으로는 태블릿이 대세가 될텐데 안드로이드는 아직 메모리 제한이 많이 걸려 있는 것 같다. 빨리 메모리 제한을 늘려야지 태블릿 개발이 활발해질 것 같다.

 역시 사람들이 많이 하는 것은 게임이다. 화려한 그래픽을 바탕으로 만들면 사람들의 이목을 쉽게 가져올 수 있다. 게임을 만들려면 메모리의 효율적이 사용이 필수이다. 절대 게임이 죽으면 안된다.

 자바 안에서 메모리를 효율적으로 사용할 수 는 노하우를 쌓아야겠다. 그래야 그것이 나의 자산이 될 것이다.

신고

'안드로이드' 카테고리의 다른 글

http 통신  (2) 2010.07.22
단말기 화면 을 실시간으로 보자  (0) 2010.07.20
Bitmap, Recycle()  (1) 2010.07.11
마켓 QR 코드 만들기  (1) 2010.07.08
Tab을 사용면서 Title 변경하기..  (0) 2010.07.06
ScrollView + listView  (1) 2010.07.03

마켓 QR 코드 만들기

2010.07.08 22:08 | Posted by JoyfulLife
market://search?q=pname:com.gmp

이런 식으로 만들면 되면


http://qrcode.kaywa.com/

여기서 만들면 된다.
신고

'안드로이드' 카테고리의 다른 글

단말기 화면 을 실시간으로 보자  (0) 2010.07.20
Bitmap, Recycle()  (1) 2010.07.11
마켓 QR 코드 만들기  (1) 2010.07.08
Tab을 사용면서 Title 변경하기..  (0) 2010.07.06
ScrollView + listView  (1) 2010.07.03
나인 패치  (0) 2010.06.29
TAG qr코드

Tab을 사용면서 Title 변경하기..

2010.07.06 10:00 | Posted by JoyfulLife

타이틀에다가 progressbar를 넣어보려고 구글링을 해보았지만 실패했다. 방법이 없는 것 같다.
tabhost를 불러주는 곳과, 2개의 실제적인 내용을 불러주는 액티비티..

타이틀을 없애주는 것은 tabhost 를 불러주는 곳에서 해야 한다. 실제적인 내용을 불러주는 곳에서 하면 적용이 안된다. 아마 상위 하위 윈도우 개념때문에 그런 것 같다.

상위 윈도우로 접근을 한 다음에 타이틀을 변경 해야 할 것 같다.

그래서 tabhost를 불러주는 곳에서 열심히 작업을 했는데 성공하지 못했다. 왜 notitle 은 먹는데 , custom title은 먹지를 않는 걸까... ? 아마 이쪽을 신경쓰고 있지 못하는 것 같다.



해결책은............... 타이틀을 없앴다.

안드로이드는 아직도 사용자의 모든 것을 구현하지 못하고 있다. 구글에서는 현재 제일 시급한 사항만 처리를 하고 있다. 그래서 상대적으로 덜 중요한 부분은 처리가 느린 것 같다..






신고

'안드로이드' 카테고리의 다른 글

Bitmap, Recycle()  (1) 2010.07.11
마켓 QR 코드 만들기  (1) 2010.07.08
Tab을 사용면서 Title 변경하기..  (0) 2010.07.06
ScrollView + listView  (1) 2010.07.03
나인 패치  (0) 2010.06.29
안드로이드 어플리케이션 종료  (0) 2010.06.01
TAG Android, Tab, title

ScrollView + listView

2010.07.03 20:40 | Posted by JoyfulLife
Scrollview 안에 listview를 넣으면 생각대로 동작을 하지 않는다.

그 이유는 listview의 높이를 Scrollview에서 인식을 하지 못하기 때문이다. 강제적으로 listView 높이를 설정하는 방법이 있지만 언제나 동적으로 변하는 listview 특성상 그것은 좋은 해결책이 되지 못한다.

그래서 ScrollView를 지우고 listview에다 layout을 임의로 생성을 하는 방법을 찾아냈다.

listview에 올라갈 레이아웃을 다른 곳에서 생성을 한다. xml형태로 생성을 한다면 layoutInflater 를 이용하면 된다.
코드로 로 LinearLayout ll=new LinearLayout(this) 형식으로 생성을 해도 된다. 개인적으로 layoutinflater방식을 추천한다.

이렇게 생성한 레이아웃을 listview에 추가한다. 추가하는 방법은 addheaderview와 addfooterview 가 있다.
listview 속성에 있다.

getListView().addhearderView(추가할 레이아웃) 으로 하면 원하는 비슷한 모양이 될 것이다.




DetailPictureAdapter DPA=new DetailPictureAdapter(this, R.layout.detailpicture_row, m_orders);
        //setListAdapter(DPA);
        lv=getListView();
       
        LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        Rl=(RelativeLayout)inflater.inflate(R.layout.test,null);
       
       
        //Rl=(RelativeLayout)findViewById(R.id.RelativeLayout03);
       
        lv.addHeaderView(Rl);
        setListAdapter(DPA);



test.xml 파일
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/bg" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
   
    <ImageView android:id="@+id/ImageView05" android:layout_height="wrap_content" android:layout_width="fill_parent"></ImageView>
    <EditText android:text="@+id/EditText01" android:id="@+id/EditText01"
        android:layout_height="wrap_content" android:background="@drawable/visitors_70"
        android:layout_below="@+id/ImageView05" android:layout_width="fill_parent"></EditText>
    <ImageView android:layout_width="wrap_content" android:id="@+id/ImageView06"
        android:layout_height="wrap_content" android:layout_toRightOf="@+id/ImageView05"
        android:src="@drawable/visitors_82" android:layout_below="@+id/EditText01"></ImageView>
    <TextView android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/ImageView06" android:layout_below="@+id/EditText01"
        android:text="@+id/TextView04" android:layout_height="wrap_content"
        android:id="@+id/TxtFrom"></TextView>
 
</RelativeLayout>



공개된 소스가 별로 없어서 좀 애를 먹었다. 안드로이드가 빨리 발전을 해서 버그 없는 세상이 되었으면 좋겠다.
신고

'안드로이드' 카테고리의 다른 글

마켓 QR 코드 만들기  (1) 2010.07.08
Tab을 사용면서 Title 변경하기..  (0) 2010.07.06
ScrollView + listView  (1) 2010.07.03
나인 패치  (0) 2010.06.29
안드로이드 어플리케이션 종료  (0) 2010.06.01
UX 교육 1/3  (0) 2010.05.15

나인 패치

2010.06.29 23:45 | Posted by JoyfulLife
나인 패치를 이용해서 어플을 만들고 있다.

이런 UI를 만들고 있다. bada 라고 쓰여진 부분은 TextView 화면이다. TextView 이미지가 사각형 모양이 아닌 약간 비스듬한 모양이다.
저런 배경화면을 쓰면 안에 글자를 어떻게 적어야 할까 생각해보게 된다.


내가 원하는 곳에 글자를 쓸 수 있을까?

그 해답을 나인패치에서 찾게 되었다.


 안드로이드 sdk에 tool 안에 draw9patch.bat 파일을 실행하면 된다.

이것을 사용하는 법은 간단하다. 실제적은 글자가 들어가는 부분을 정해주는 부분은 아래부분과 오른쪽 끝부분이다. 이곳에 왼쪽 마우스를 클릭하면 까만 점이 그려진다.



이런식으로 까만 점을 색칠하면 오른쪽 화면에 contents 가 들어갈 수 있는 부분이 표시가 된다. 이 안에 글자가 들어가는 것이다.


아직 끝난 것이 아니다.

위부분과 왼쪽 부분도 까만 점을 정해주어야 한다. 위부분은 가로방향으로 늘어날 경우 늘어날 부분을 정해주는 것이고, 왼쪽 부분은 세로 방향으로 늘어날 경우 늘어날 부분을 정해주는 것이다.


신고

'안드로이드' 카테고리의 다른 글

Tab을 사용면서 Title 변경하기..  (0) 2010.07.06
ScrollView + listView  (1) 2010.07.03
나인 패치  (0) 2010.06.29
안드로이드 어플리케이션 종료  (0) 2010.06.01
UX 교육 1/3  (0) 2010.05.15
구글 개발자 등록 완료  (0) 2010.05.10
이전 1 2 3 4 5 다음

티스토리 툴바