1. 기기 가로세로 픽셀값 가져오기
//가로 픽셀
getResources().getDisplayMetrics().widthPixels;
//세로 픽셀
getResources().getDisplayMetrics().heightPixels;
2. dimen.xml 에 정의한 사용자 정의 dp값 가져오기
getResources().getDimensionPixelOffset(R.dimen.yourDimen);
3. 상단바까지 전부 가린 FullScreen 모드로 설정하기
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
4. ActivityResultLauncher 초기화
ActivityResultLauncher<Intent> yourLauncher;
yourLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == RESULT_OK) {
Intent intent = result.getData();
if (intent != null) {
}
}
}
});
5. 프래그먼트 관리
FragmentManager fm = getSupportFragmentManager(); //getFragmentManager 쓰지 않기
FragmentTransaction transaction = fm.beginTransaction();
//프래그먼트 생성
YourFragment yourFragment = YourFragment.newInstance();
//생성 시 파라미터를 넘겨야할 때도 있으니 newInstance 호출에 익숙해 지자
transaction.add(R.id.yourFrameLayout, yourFragment, "yourTag");
transaction.commit(); //프래그먼트 트랜잭션 작업 후 잊지말고 commit 하기
//추가한 프래그먼트에 접근해야 할 때
//yourFragment.yourFunction(); <-- 이거 절대 안됨 바보같은 짓
YourFragment youAddedFragment = (YourFragment) fm.findFragmentByTag("yourTag");
youAddedFragment.yourFunction();
6. 내부 DB 이용하기
//데이터베이스 호출(없을 경우 생성)
SQLiteDatabase yourDB = openOrCreateDatabase("yourDB_Name", Context.MODE_PRIVATE, null);
//테이블 생성(있는 경우 자동으로 넘어감)
yourDB.execSQL("CREATE TABLE IF NOT EXISTS yourTableName ( " +
"index INTEGER PRIMARY KEY AUTOINCREMENT, yourColumn TEXT)");
//데이터 추가
String yourData = "yourData";
yourDB.execSQL("INSERT INTO yourTableName (yourColumn) " +
"VALUES ('" + yourData + "')");
//데이터 선택
Cursor cursor = yourDB.rawQuery("SELECT * FROM yourTableName " +
"WHERE yourColumn = '" + yourData + "'" );
for (int i=0; i<cursor.getCount(); i++) {
cursor.moveToNext();
Log.d("YourResult", "index: " + cursor.getInt(0) + "\n" +
"yourColumn: " + cursor.getString(1));
}
cursor.close(); // 커서 꼭 닫기
//데이터 삭제
yourDB.execSQL("DELETE FROM yourTableName WHERE index = 1");
//데이터베이스 사용이 끝나면 반드시 close 호출
yourDB.close();
7. 화면 전환 시 애니메이션 적용
//startActivity() 혹은 onBackPressed() 뒤에 붙여주기
startActivity(intent);
overridePendingTransition(R.anim.ScreenEnterAnimation, R.anim.ScreenOutAnimation);
onBackPressed();
overridePendingTransition(R.anim.ScreenEnterAnimation, R.anim.ScreenOutAnimation);
8. EditText 이용 시 키보드 올리기, 내리기
InputMethodManager imm;
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
EditText editText = findViewById(R.id.editText);
//키보드 올리기
editText.requestFocus();
imm.showSoftInput(editText, 0); //키보드 올릴때는 반드시 editText에 포커스를 준 후 호출
//키보드 내리기
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
9. EditText 이용 시 다른 화면 터치로 키보드 내리기
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
View focusView = this.getCurrentFocus();
if (focusView != null) {
Rect rect = new Rect();
focusView.getGlobalVisibleRect(rect);
int x = (int) ev.getX();
int y = (int) ev.getY();
if (!rect.contains(x, y)) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(focusView.getWindowToken(), 0);
focusView.clearFocus();
return true;
}
}
return super.dispatchTouchEvent(ev);
}
'Android(Java)' 카테고리의 다른 글
Android 11 이상 버전에서 외부 저장소 이미지 삭제하기 (0) | 2022.04.06 |
---|---|
안드로이드 버전 별 이미지 저장 (0) | 2022.03.16 |
RecyclerView & ViewPager2 끝에서 스크롤 감지 (0) | 2021.12.31 |
일반 Activity를 FragmentActivity로 변경하기 (0) | 2021.11.30 |
activity.runOnUiThread() (0) | 2021.11.15 |