Android 안드로이드2014. 10. 20. 22:03


출처: 슈퍼드로이드


16. Activity에 대해서 - Thread 와 Android Main Thread

http://cafe.daum.net/superdroid/aAfL/98


--------------------------------------------------------------


package com.test.ThreadTest;


import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.widget.TextView;


public class A extends Activity {

static final int REQUEST_DRAW_COUNT = 1;

TextView   mTextView = null;

Handler mHandler = null;

int mCount = 0;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        mTextView = (TextView) findViewById(R.id.text_view);

        

        //mHandler = new Handler(); // runnable 방식

        

        mHandler = new Handler() // handleMessage 방식

        {

        public void handleMessage(Message msg) {

        switch (msg.what)

        {

        case REQUEST_DRAW_COUNT:

        mCount = msg.arg1;

        mTextView.setText("Count : " + mCount);

        break;

        }

        }

        };

    }

    

    public void onClick(View v)

    { 

    switch(v.getId())

    {

    case R.id.set_count_btn:

    new Thread()

    {

    public void run()

    {

    /*  // runnable방식

    Runnable runnable = new Runnable ()

    {

    public void run()

    {

    mTextView.setText("count : " + mCount);

    }

    };

    Message msg = Message.obtain(mHandler, runnable);

    mCount = 50; 

    mHandler.sendMessage(msg); */

   

    // handleMessage 방식

    Message msg = Message.obtain(mHandler, REQUEST_DRAW_COUNT);

    msg.arg1 = 50;

    mHandler.sendMessage(msg);

    }  

    }.start();

   

    /*    //오류

    new Thread()

    {

    @Override

        public void run() 

        {

    mTextView.setText("Count : " + 50);

        }

   

    }.start(); */

   

    break;

    }

    }

}




Posted by 코드버무려
Android 안드로이드2014. 8. 18. 14:49

패키지 주소와 파일명 변경 과정 중 삽질


이클립스로 안드로이드 프로젝트를 만들어가는 중 패키지 주소를 변경할 필요가 생겼다.

아울러 프로젝트 명과 앱 이름도 같이 가꾸어야 했다.


Package Explorer에서 바꾸려는 항목을 클릭하고 키보드 상에서 F2를 누르면 대화 상자가 뜬다.

예로 클래스를 바꾸면 연관된 부분을 같이 바꾼다고 preview로 알려준다.

그 아래에 경고 문구가 주를 6줄 정도 같이 뜬다.

내용을 보니 기존에 다운 바은 사용자는 자동 업데이트 적용 불가능하다고 알려준다.

몇 가지가 더 있다.


새로 프로젝트를 만들면서 패키지 주소와 클래스 이름 등 여타 항목을 새로 만들기도 했다.

복사해 넣고 리소는 드래그앤드롭으로 끌어 놓아 갔다.


중간에 AndroidManifest.xml 파일이 2개가 생성되었다. 어느 순간에 나타났는지 포착하지 않았다.

내용이 같아 하나를 지웠다. 모든 부분을 다 넣었고 소스에서 변경된 클래스에 맞추어 레퍼런스도

바꿨다. 


매너패스트가 없다고 나온다. 폴더에는 없는데 Package Explorer는 보인다. 만들어 주었다.

마지막 에러 하나가 잡히지 않는다. 클래스에 이름 쭉 그어져 있고...


다시 만들어야 하나. ......

....

..

.

.


.

.

..


Android소스 에러없이 패키지와 클래스명 변경

http://santerminal.tistory.com/95



Posted by 코드버무려
Android 안드로이드2014. 7. 27. 07:19
  1. Intent 활용 예제 ExIntentActivity.java 파일
  2. Activity 하나를 열어 입력한 값을 찍는다.
  3. 똑같은 Activity를 반복해 호출함.
  4. Log.i()는 정보 information를 LogCat에 찍는다.
  5. Log.i()를 사용하려면 import android.util.*; 또는 import android.util.Log가 필요하다.




package soo.intent.ex.test;


import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.*;

import android.util.*;


public class ExIntentActivity extends Activity {

//int iLogFlow = 0;

    EditText et1, et2;

    Button b;

    Intent i1, i2;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        et1 = (EditText)findViewById(R.id.EditText01);

        et1.requestFocus();

        et2 = (EditText)findViewById(R.id.EditText02);

        b = (Button)findViewById(R.id.Button01);

        

        Log.i("ExIntentActivity", " b4 onClick");   // Log찍기

    

        i2 = new Intent(this, ExIntentActivity.class);

        b.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

Log.i("ExIntentActivity", "onClick()");   // Log찍기

i2.putExtra("key", et1.getText().toString());

ExIntentActivity.this.startActivity(i2);

Log.i("ExIntentActivity", "onClick() a4 startActivity");   // Log찍기

et1.setText("입력한 값: "+ et1.getText().toString() + "<====이 줄은 순식간에 사라짐");

ExIntentActivity.this.finish();//onDestroy()호출

}

});

        

        

        i1 = getIntent();

        getData();

    }

    void getData(){

    Log.i("ExIntentActivity", "getData()");   // Log찍기

   

    String value = i1.getStringExtra("key");

    if(value != null) et2.setText(value);

    }

}


=====================

아래는 main.xml파일


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

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

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >


    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_margin="20px"

        android:text="매인 Main Activity" 

        android:gravity="center"

        android:textSize="40px"/>

    

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content">

        <EditText 

            android:id="@+id/EditText01"

            android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_weight="1"

        android:maxLines="1"/>

        <Button 

            android:id="@+id/Button01"

            android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="전송"/>

    </LinearLayout>

    

    <EditText 

        android:id="@+id/EditText02"

        android:layout_width="fill_parent"

        android:layout_height="match_parent"

        android:editable="false"

        android:hint="여기에 전송결과 뿌려짐!!"/>

</LinearLayout>

Posted by 코드버무려
Android 안드로이드2014. 7. 24. 11:34



res 폴더: raw 리소스 와 같이 형쇼ㅣㄱ이 정해지지 않은 동영상,음원, 그림 파일은 


  • 애플리케이션 (구성요소) { 액티비티, 서비스, 컨테트프로바이더, 브로드캐스트 리시버}
  • 인탠드: 구섳요소간 통신을 담당. 메세지를 주고 받음.
  • 암시적 인탠드: 
    • 보안에 관련될 경우 사위 버전으로 올라가면서 막히는 경우가 잇다.
    • 앱을 화려하게 만드는 가장 손쉬운 방법
    • 조건을 주어서 호출
  • 명시적 인탠드:
    • 목적지가 분명한
    • 애플리케이션 구성요소를 호츠ㅜㄹ할 때 사용
  • 다이알로그, 노티피케이션, 토스트 ; 유저에게 뭔가를 알려줌
  • dksem 안드로이드에서 모든 xml 리소스를 참조할 수 있다.(syle xml만 불가).
  • 단위는 dp를 주로 사용한다. 
  • dp : 해상도 비의존 픽셀수 (가상의 160dpi 해상도 화면에서의 픽셀수, 실제 화면의 해상도에 따라 변화 )  -> '에/실' 폰과 사이즈가 동일


Posted by 코드버무려
Android 안드로이드2014. 7. 23. 16:29



눈에 보이는 모든 컴포넌트를 뷰라고 한다. 뷰의 자식이다.  R.id.btn


에벤

이벤트 감지를 리슨이라고 한다


보통 이벤트를 헨들러라고 한다.


내부 클래스 사용 목적

->외부 클래스의 자원(멤버/메소드)을 자기 것처럼  사용하려교


context  는 부모 오브 activity    (  context > activity  )



무명 내부클레스



방법3:::

전혀다른 클레스 class ThirdHandler

장점: 다른 파일로 분리할 수 있다



@Override 는 부모 메소드를 여기서 바로 오버라이드 하겠다는 표시. JDK 6부터 지원.



이벤트 헨들러 처리가능 경우 수

 = UI컴포넌트 (텍스트박스, 버튼, 에디트박스, 라디오 버튼........) x 리스너 갯수 * 4가지 



이벤트 처리

  1. 유명 내부
  2. 무명(익명) 내부
  3. 제 3클레스
  4. 자신 클새스


Posted by 코드버무려