=================================
=================================
=================================
출처: http://cauca.springnote.com/pages/7165251?print=1
* WebView Download
http://sdop.egloos.com/3630690
setDownloadListener
* ListView 선택 후 스크롤 시 전체 리스트 검정 화면으로 바뀌면서 스크롤 되는 현상 문의오프뷔더
http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html
요약하면 android:cacheColorHint를 지정하시면 됩니다.
* usim, 전화번호(MDN) 구하기
android.telephony 패키지 참고
http://d.android.com/reference/android/telephony/TelephonyManager.html#getLine1Number() 참고하시기 바랍니다. READ_PHONE_STATE 퍼미션이 필요합니다
* TelephoneyManager 에 대한 자세한 설명
http://icess.egloos.com/3279459
#### 화면 크기
mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
int displayWidth = mWinMgr.getDefaultDisplay().getWidth();
#### wifi, 3G 에 대한 Network change
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
##################################################
# android.graphics.Camera
##################################################
3d flip 효과
http://blog.paran.com/fanfare%40hitel/34356715
Transformation Matrix 설명
http://www.senocular.com/flash/tutorials/transformmatrix/
Camera.save() : 스택에 maxtrix 를 넣는다.
Camera.restore() : 현재 transformation 을 없애고,
마지막 저장된 상태(스택에서 꺼냄)로 돌아가 계속 진행한다.
순서
1. canvas.save();
2. transform matrix;
3. draw;
4. canvas.restore();
Canvas.save, Canvas.restore; Camera.save, Camera.restore
http://maohao.wordpress.com/category/graphics/
## Etc
Android Coverflow Widget V2
http://www.inter-fuser.com/2010/02/android-coverflow-widget-v2.html
##################################################
# SMS
##################################################
#### 수신되는 SMS 를 따로 처리하는 broadcast receiver
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
BroadcastReceiver 클래스를 사용하면
#### 참고
SMS에 반응하는 프로그램(안드로이드)
http://flytop.tistory.com/62
SMS Messaging in Android (외국)
http://mobiforge.com/developing/story/sms-messaging-android
Inbox 내 SMS 문자 삭제하기
aphone 에서 검색
##################################################
# ViewFlipper
##################################################
: In/Out 속성을 지정하여 View 의 이동을 animation 처리한다.
1. 레이아웃 구성
ViewFlipper 에 포함될 View 를 정의
2. 애니메니션 구성
res/anim 에 원하는 애니메이션 구성
3. 코드 구성
mFilpper = (ViewFlipper)this.findVeiwById(R.id.flipper)
mFilpper.startFlipping();
mFilpper.setInAnimation(...);
mFilpper.setOutAnimation(...);
* 선언한 뷰를 class로 매핑
flipper = (ViewFlipper)findViewById(R.id.flipper);
title = (Title)flipper.getChildAt(0);
menu = (Menu)flipper.getChildAt(1);
game = (Game)flipper.getChildAt(2);
* 원하는 뷰를 화면에 나타내기
flipper.setDisplayedChild(2);
* 참고사항
setContentView혹은 layoutinflate를 하는 시점에 모든 뷰가 생성이 되고 화면에 보이는 여부와 상관없이
종료할때까지는 계속 살아 있기 때문에 특정 view를 보일때 초기화를 한다든지 하는건 알아서 해줘야함
(별도의 overriding할 method같은건 당연히 제공되지 않음)
## 이벤트 처리
http://tigerwoods.tistory.com/23
OnTouchListener 인터페이스의 구현
화면에 일어나는 touch를 감지하기 위해서는 android.view.View.OnTouchListener interface를 구현하여야 한다.
OnTouchListener 인터페이스는 다음과 같은 abstract callback method를 포함 함으로 구현해 주어야 한다.
Animation 리소스의 사용
push_left_in.xml: 새로운 view가 왼쪽 방향으로 밀려 들어옴.
push_left_out.xml: 기존 view가 왼쪽 방향으로 밀려 나감.
push_right_in.xml: 새로운 view가 오른쪽 방향으로 밀려 들어옴.
push_right_out.xml: 기존 view가 오른쪽 방향으로 밀려 나감.
<translate>
상하좌우 이동 animation을 지정하며. TranslateAnimation 클래스에 대응한다.
<alpha>
투명함을 조정하며, AlphaAnimation 클래스에 대응한다.
Java code에서 ViewFlipper 객체의 사용
View:addView(View): layout xml 문서 내부의 ViewFlipper element에 nest된 view 이외에 새로운 view를 동적으로 추가한다.
ViewAnimator:setInAnimation(Context, int): 새로운 view가 화면에 진입시의 animation 설정
ViewAnimator:setOutAnimation(Context, int): 기존 view가 화면에서 퇴장시의 animation 설정
ViewAnimator:showNext(): ViewFlipper에 등록된 view중 현재 view의 다음 view를 화면에 보이게 함
ViewAnimator:showPrevious(): ViewFlipper에 등록된 view중 현재 view의 전 view를 화면에 보이게 함
ViewFlipper:setFlipInterval(int): 자동 flipping시 적용할 시간간격 (1/1000초 단위 사용)
ViewFlipper:startFlipping(): 설정된 시간간격을 적용해 자동 flipping 시작 함
ViewFlipper:stopFlipping(): 자동 flipping을 정지 함
ViewSwitcher : ViewFlipper와 동일
##################################################
# Thread
##################################################
안드로이드 021: Thread 구현하기 2/2 (with AsyncTask & ProgressBar)
http://tigerwoods.tistory.com/28
Thread - Handler and Looper
http://skyswim42.egloos.com/3546223
[번역완료]Talking about Android Message Queue
http://blog.naver.com/osk1004?Redirect=Log&logNo=50068938534
안드로이드 Key/Touch event dispatch 과정
http://cafe.naver.com/05cmusa2.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=385
==> 추가 내용
android UI thread, painless threading
http://sdop.egloos.com/3600978
UI 관련 행위는 UI Thread(Main Thread)에서 수행해야한다
Android - UI Thread와 Handler
http://www.cyworld.com/thespeedofpain/2653453
'view 구조를 생성한 쓰레드에서만 그 view를 건드릴 수 있다
'android.os.Handler' class를 활용한다
- job queue 로 서로 주고 받음
Android App - Using threads and ProgressDialog 참고
* Networking with Android
http://blog.naver.com/davincigo?Redirect=Log&logNo=60103780004
public class Requester extends Thread {
Socket requestSocket;
String message;
StringBuilder returnStringBuffer = new StringBuilder();
Message lmsg;
int ch;
@Override
public void run() {
try {
this.requestSocket = new Socket("remote.servername.com", 13);
InputStreamReader isr = new InputStreamReader(this.requestSocket.
getInputStream(), "ISO-8859-1");
while ((this.ch = isr.read()) != -1) {
this.returnStringBuffer.append((char) this.ch);
}
this.message = this.returnStringBuffer.toString();
this.lmsg = new Message();
this.lmsg.obj = this.message;
this.lmsg.what = 0;
h.sendMessage(this.lmsg);
this.requestSocket.close();
} catch (Exception ee) {
Log.d("sample application", "failed to read data" + ee.getMessage());
}
}
}
##################################################
Android - Updating UI On UI Thread
http://escomic.net/211
Android에서도 UI관련 행위는 UI Thread위에서 해야한다
그렇지 않으면 아래와 같은 Exception이 발생한다
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created .....
Swing의 SwingUtilities.invokeLater(Runnable r)와 같은 역할을 하는 아래의 방법을 사용하여 해결할수 있다
Activity.runOnUiThread(Runnable action)
View.post(Runnable action)
View.postDelayed(Runnable action, long delayMillis)
Handler.post(Runnable action)
##################################################
Android에서의 TCP/IP 통신
http://blog.naver.com/davincigo?Redirect=Log&logNo=60103774153
Grab a URL Source with ProgressDialog and AsyncTask
http://www.androidsnippets.org/snippets/116/
Handler를 써야 합니다.
http://www.androidpub.com/?_filter=search&mid=android_dev_info&search_target=title&search_keyword=Handler&document_srl=57470
미디어 갤러리
http://developer.android.com/reference/android/content/Intent.html#ACTION_SEND
http://modian.tistory.com/entry/Gallery-Camera-사용
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE : Broadcast Action: Request the media scanner to scan a file and add it to the media database.
##################################################
# SurfaceView
##################################################
[ 안드로이드 개발 2.0 ] 그래픽 2D 1 - 안드로이드 아이콘 띄우기, 커스텀뷰 활용
http://moozi.tistory.com/80
[ 안드로이드 개발 2.0 ] 그래픽 2D 2 - SurfaceView 활용 1
http://moozi.tistory.com/81
[ 안드로이드 개발 2.0 ] 그래픽 2D 3 - SurfaceView 활용 2
http://moozi.tistory.com/82
* 스크린 사이즈 변경시 Call Back 함수를 호출함
View 에서 그리기
1) View 상속 클래스 생성
2) onDraw() 오버라이딩
3) invalidate() 호출
SurfaceView 에서 그리기
1) SurfaceHolder.lockCanvas() 와 SurfaceHolder.unlockCnavasAndPost() 를
이용하여 화면을 갱신함
##################################################
# Android 사용자 커스텀뷰
##################################################
android에서 이미지뷰 Drag 해보기
http://blog.naver.com/eriteia?Redirect=Log&logNo=10077769956
Create Custom Widget : http://developer.android.com/guide/topics/ui/custom-components.html (원문)
기본적인 접근
1. View또는 기존 생성한 클래스를 상속(Extends) 받는다.
2. 상위 클래스(Super Class)의 메소드(onXXX …) 를 오버라이드 한다. Ex) onDraw(), onKeyDown(), onMeasure()…
3. 이제 클래스를 새롭게 확장한 이후 이 클래스를 바탕으로 좀더 확장해 나간다.
참조
onDraw () : 2D 그래픽을 그리기 위한 메소드
onMeasure() : Widget의 크기(영역 : 폭, 높이)을 지정하는 메소드
기존 존재하는 클래스 확장 예시
1. 정의
public static class MyEditText extends EditText
2. 클래스 초기화
Super를 사용하여 상위 클래스를 초기화 한다 이후 xml 을 통해 레이아웃을 초기화 할 수 있다.
3. 메소드 오버라이드
onDraw(), onMeasure() 등을 오버라이딩 하여 원하는 형태로 꾸며준다.
4. 커스텀 컴포넌트 사용
<view
class="com.android.notepad.NoteEditor$MyEditText"
id="@+id/note"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:drawable/empty"
android:padding="10dip"
android:scrollbars="vertical"
android:fadingEdge="vertical" />
* IMSI, 핸드폰 번호 알아오기
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = mTelephonyMgr.getSubscriberId();
String imei = mTelephonyMgr.getDeviceId();
String phoneNumber = mTelephonyMgr.getLine1Number();
[안드로이드] Toast View 만들기
http://blog.daum.net/hopefullife/79
##################################################
# 전체화면 사용하기 (Status bar, Title bar 숨기기)
##################################################
- 타이틀바 및 상태바 숨기기
* Fullscreen 의 경우 Annon 영역이 없어짐 (32pixel)
참고 : http://www.androidpub.com/4710
* AndroidManifest.xml 에서 처리
<activity android:name=".MyActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
* java 에서 처리
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView 전에 호출
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(...);
##################################################
# 기타
##################################################
* View 컨테이너로 쓰이는 ViewGroup 들
ViewGroup 은 Layout 과 비슷하지만
자기 자신도 어느 정도의 기능을 제공한다.
- Gallery, GridView, ImageSwitcher, ScrollView, TabHost, ListView 등 ..
##################################################
# 바코드 처리
##################################################
안드로이드 바코드 인식기(OCR) 오픈소스 zxing 분석(by wono77)
http://blog.naver.com/wono77?Redirect=Log&logNo=140101427842
import com.google.zxing.*;
import com.google.zxing.common.ByteMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
QRCodeWriter writer = new QRCodeWriter();
try {
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
ByteMatrix matrix = writer.encode("한글입력", BarcodeFormat.QR_CODE, 230, 230, hints);
MatrixToImageWriter.writeToFile(matrix , "png", new File("d:/test1.png"));
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
안드로이드 바코드 인식기(OCR) 오픈소스 zxing 분석(by wono77)
http://blog.naver.com/wono77?Redirect=Log&logNo=140101427842
1. ByteMatrix 를 구한다.
2. int[] pixels = new int[width * height]; 를 만든다.
3. android.graphics.Bitmap 으로 저장한다.
ByteMatrix result = new MultiFormatWriter().encode(contents, format,
pixelResolution, pixelResolution);
int width = result.getWidth();
int height = result.getHeight();
byte[][] array = result.getArray();
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int grey = array[y][x] & 0xff;
// pixels[y * width + x] = (0xff << 24) | (grey << 16) | (grey << 8) | grey;
pixels[y * width + x] = 0xff000000 | (0x00010101 * grey);
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
##################################################
# 개발 규칙
##################################################
* member 변수에 prefix 로 m 을 붙이는건 어떨지?
* SQLite
- 기본키는 필드 이름에 _(언더라인)을 붙인다.
ex) notes 테이블 : _id, title, body 의 3개 필드로 구성됨
* 이미지는 영문 소문자, 숫자, 언더라인(_) 만 가능함
* 투명 이미지는 png 나 gif 로 저장할 것
##################################################
# View 크기(Dimension) 지정 단위
##################################################
px (pixels) : 실제 화면 픽셀
sp (scaled pixels - best for test size) : 가변 글꼴 표시에 최적임
pt (points) : 글자 크기 단위
dip (device independent pixels) : 160dpi 화면을 기준으로 한 픽셀 단위
- 버튼, 메뉴등 width 지정
in (inches) : 물리적 길이
mm (millimeters) : 물리적 길이
em : TextView 에서 텍스트의 표시량을 글꼴에 무관하게 제어할때 유용
##################################################
# 삼성안드로이드폰 - M100S 리뷰
##################################################
삼성안드로이드폰 리뷰#1 : 삼성안드로이드폰 가격,디자인 및 아이폰과 터치감 비교
- http://blog.naver.com/clie701/110081285012
삼성안드로이드폰 리뷰#2 : 인터넷 속도 및 안드로이드 안드로이드 어플리케이션의...
- http://blog.naver.com/clie701/110081381001
##################################################
# 도서 리뷰
##################################################
안드로이드 개발, 어떻게 시작하는게 좋을까?
- http://nopdin.tistory.com/699
형화 추전 서적
1. 초급
시작하세요 안드로이드 프로그래밍
2. 초+중급
알짜만 골라 배우는 안드로이드 프로그래밍
프로페셔널 안드로이드 프로그래밍(일명 빨간책)
=================================
=================================
=================================
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 팝업창 만들기 (0) | 2012.03.27 |
---|---|
안드로이드 패키지명 패키지이름 알아보기 관련 (0) | 2012.03.20 |
안드로이드 해상도 화면관련 (0) | 2012.03.19 |
웹뷰 api WebView 의 loadDataWithBaseURL, loadData 차이점과 문제점 (0) | 2012.03.15 |
안드로이드 레이아웃 left, right, top, bottom 기준으로 먼저 영역을 잡은뒤 fill_parent 으로 채우기, weight로 필요영역 남기고 채우기 (0) | 2012.03.13 |
댓글 영역