2010년 7월 5일 월요일

LinearLayout에 커스토머 뷰를 추가

* LinearLayout에 커스토머 뷰를 추가

LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Hello hello_layout= new Hello( mContext, mInflater, number_list,number_list.getChildCount(), numbering_count);
main_layout.addView(hello_layout.hello_infomation);

- main_layout이라고 선언한 LinearLayout에 new Hello 로 생성한 레이아아웃을 add 한다.

자바 날짜, 시간 구하기

* 현재 날짜와 시간, 분, 초 구하기

Calendar cld = Calendar.getInstance();
int cldYY = cld.get(Calendar.YEAR);
int cldMM = cld.get(Calendar.MONTH)+1;
int cldDD = cld.get(Calendar.DATE);
int cldHH_12 = cld.get(Calendar.HOUR);
int cldHH_24 = cld.get(Calendar.HOUR_OF_DAY);
int cldMIN = cld.get(Calendar.MINUTE);
int cldAM = cld.get(Calendar.AM);




* 24시, 12시 확인

boolean format_24 = DateFormat.is24HourFormat(this);
String todayDate = "";
String todayTime = "";
String todayAMPM = "";
mContext.getResources().getString(R.string.year);
todayAMPM = (cldAM!=0) ? "AM":"PM";
todayDate = cldYY+mContext.getResources().getString(R.string.year)+" "+cldMM+mContext.getResources().getString(R.string.month)+" "+cldDD+mContext.getResources().getString(R.string.day);
if(format_24){

todayTime = cldHH_24+mContext.getResources().getString(R.string.hour)+" "+cldMIN+mContext.getResources().getString(R.string.minute);
}else{
todayTime = todayAMPM+" "+cldHH_12+"시 "+cldMIN+"분";
}





* GregorianCalendar 을 사용하여 날, 시간을 세팅해서 msc로 값을 구하기

GregorianCalendar g = (GregorianCalendar) Calendar.getInstance();
g.set(reservDateValue_1, reservDateValue_2-1, reservDateValue_3, hour, reservTimeValue_3, 0);
sendTime = g.getTimeInMillis();

2010년 6월 25일 금요일

contacts photo 가져오기(주소록 사진)

주소록 사진 가져오기



retcursor = managedQuery(uri,projection,selection,orgSelection,sortOrder);

//getPhoto호출
long id = retcursor.getLong(retcursor.getColumnIndex(projection[0])); //projection[0] => ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
bitmap = getPhoto(resolver, id);

//비트맵으로 포토가져오기
public Bitmap getPhoto(ContentResolver contentResolver, Long contactId) {
Uri contactPhotoUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);

// contactPhotoUri --> content://com.android.contacts/contacts/1557

InputStream photoDataStream = Contacts.openContactPhotoInputStream(contentResolver,contactPhotoUri); // <-- always null
Bitmap photo = BitmapFactory.decodeStream(photoDataStream);
return photo;
}

//비트맵 넣기
ImageView contact_photo;
contact_photo=(ImageView) contact_infomation.findViewById(R.id.contact_photo);

contact_photo.setImageBitmap(photo);

2010년 5월 2일 일요일

mp 플레이 타임 Api

* mp 플레이 타임

mp.getDuration()/1000; //1000분에 1초로 나오네요
mp.getCurrentPosition(); //현재 시크 위치

2010년 4월 30일 금요일

Android] 한 줄에서 몇 줄로 되는 필요한 잡코드들

Android] 한 줄에서 몇 줄로 되는 필요한 잡코드들 ㅋㅋ

17. Android 키보드 숫자형으로 시작하게 하기
edittext.setInputType(InputType.TYPE_CLASS_NUMBER);

16. Android listview 검정화면 없애기
android:cacheColorHint="#00000000"

15. Android 화면 고정하기

AndroidManifest.xml의 activity 속성중 screenOrientation을 다음과 같이 지정해준다.


//화면을 세로로 유지
android:label="@string/app_name"
android:screenOrientation="portrait">
//화면을 가로로 유지
android:label="@string/app_name"
android:screenOrientation="landscape">
자바 소스에서
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

14. Android Handler example
// 시간주고 바로 뜨게 하기 20이 최소 가능 값..
new Handler().postDelayed(new Runnable() {
public void run() {
openOptionsMenu();
}
}, 20);

13. Android 소프트 키보드 끄기 및 보이기 및 숨기기
// 키보드 오프시키는 소스..
EditText et = (EditText)findViewById(R.id.menu6_e_number);
et.setInputType(0); //가상키보드 오프

1. 보이게 하기

EditText et = (EditText)findViewById(R.id.moneyEdit);
et.setInputType(0); //가상키보드 오프

et.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(input, 0);
}
});

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, 0);

2. 숨기기
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);


12. Android Edittext Hint, 흐리게 보이기
android:hint="ex) 안드로이드"


11. Android EditText 숫자키만 허용하기

DigitsKeyListener digit =
new DigitsKeyListener(true, true); // first true : is signed, second one : is decimal
digit.setKeyListener( MyDigitKeyListener );


위와같이 하거나 xml 에서

android:inputType="number"


10. Android Option menu 실행 소스
openOptionsMenu();


9. Android Menu 만들기
- xml 소스
res/menu/menu.menu


android:id="@+id/adjust"
android:title="수정"
android:orderInCategory="1" >

android:id="@+id/delete"
android:title="삭제"
android:orderInCategory="2" >



- 자바 소스
// OptionMenu
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.del_adjust, menu);
return true;
}

// OptionMenu click event
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.adjust:
finish();
return true;

case R.id.delete:
finish();
return true;
}
return false;
}

8. Android Dialog 만들기 (Android.Dialog.Builder())

기존에는 Activity에서 showAlert(()를 제공해줬나보다. (예제를 보니...)
더 이상 지원하지 않기 때문에 AlertDialog.Builder()를 이용하여 Dialog를 생성하였다.

*onClickLister() 생성시 반드시 DialogInterface.OnClickListener()라고 클래스를 적어줘야 한다.
(Activity에서 button 클릭 이벤트를 처리하기 위해 import한 View 클래스에 OnClickListener 메소드가 있다.)

a. Android yes or no - 버튼 2개짜리
new AlertDialog.Builder(LoginMainActivity.this)
.setTitle("Login Data")
.setMessage("rosa : test") //줄였음
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//...할일
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//...할일
}
})
.show();

b. Android ok (or cancel)
new AlertDialog.Builder(LoginMainActivity.this)
.setTitle("Login Data")
.setMessage("rosa : test") //줄였음
.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//...할일
}
})
.show();

c. Android 다른 layout 출력
new AlertDialog.Builder(LoginMainActivity.this)
.setTitle("list 예제")
.setItems(R.array.listBtnArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int selectedIndex) {
String[] list = getResources().getStringArray(R.array.listBtnArray);
new AlertDialog.Builder(LoginMainActivity.this)
.setTitle("선택한 리스트 아이템")
.setMessage(list[selectedIndex])
.setNeutralButton("OK", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
}
})
.show();

--
value 값으로 array 추가

One
Two
Three





7. Android 뒤로 가기 키
onBackPressed();

6. Android 바이브레이터
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
// 퍼미션



5. Android 밝기 셋팅
Window w = getWindow();
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0~1까지의 float 값;
w.setAttributes(lp);


-1.f를 주면 default 밝기로 세팅됩니다.

4. Android 화면 꺼지는것 막기
현재 Activity가 보여지고 있는 동안은 시간이 지나도
화면이 자동으로 꺼지지 않도록 합니다.
즉 단말이 슬립상태로 들어가지 않고 계속 화면을 켜놓습니다.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

3. Android toast
1-Type
Toast.makeText.(this, "토스트 메세지", Toast.LENGTH_SHORT).show();

2-Type
Context context = getApplicationContext();
String msg = "";
int duration = Toast.LENGTH_SHORT;
Toast.makeText(context, b, duration).show();


2. Android View 백그라운드 색 변경
TextView a = null;
a.setBackgroundColor(Color.WHITE);

1. Android timer 이용
http://docs.androidside.com/docs/reference/java/util/TimerTask.html
--------------------------------------------------------------------------------------------------
모토로이 볼륨 올리고 내리는 버튼 키값을 알아내서
edittext 에 원하는 값을 넣는 방법 볼룸 위아래 버튼을 누르면
화면에 벨로시 볼륨 조절하는 창이 나타나는데 완전히 키값을 가로채는 방법

et_editText.setOnKeyListener(new OnKeyListener() {

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(keyCode == 24 || keyCode == 25){
et_editText.setText("1234567890");

return true;
}
}
return false;
}

});


- 전체적으로 필요한 기능
// 종료 후 재 부팅시 기능이 죽지않고 유지되게 하는 방법들..
http://www.androidpub.com/android_dev_qna/189549

- 박사마 만드는데 필요한 기능
// view에서 페이지 넘기는 기능
API Demos에서 Animation에 간단하게 Fade in, Zoom in 효과가 있네요.

내가 만드는 부분에 필요한 부분들
// 강제로 클릭을 발생시키는 이벤트

dispatchTouchEvent
// 좌표관련들..
getWidth()랑 getHeight()로 전체 좌표값을 얻어오고 %로 비율 정해서 좌표값 설정하세요




출처 : Posted by Winchester.K

\\=> http://winchester.tistory.com/entry/Android-%ED%95%9C-%EC%A4%84%EC%97%90%EC%84%9C-%EB%AA%87-%EC%A4%84%EB%A1%9C-%EB%90%98%EB%8A%94-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9E%A1%EC%BD%94%EB%93%9C%EB%93%A4-%E3%85%8B%E3%85%8B

2010년 4월 28일 수요일

notifyDataSetChanged()

notifyDataSetChanged()

만약 여러분의 애플리케이션이 존속하는 동안 여러분의 어댑터Adapter에 의해 읽혀지게 되는 기본적인 데이터를 여러분이 바꾼다면, 여러분은 notifyDataSet Changed()를 호출해야 한다. 이것은 첨부된 어댑터뷰AdapterView에게 데이터가 변경되었고, 그래서 스스로를 갱신해야 한다는 것을 통보할 것이다.