안드로이드 프로그래밍을 하다보면 startActivity(intent)로 액티비티 전환을 할 때가 있다 여기서 뒤로가기를 누르면 이전 액티비티로 돌아가게 되는데 이러한 동작을 막기 위해 뒤로가기 액티비티를 없애고 싶을 때가 있다 이를 manifest에서 지정하는 방법이 있지만 주로 사용하는 방법은 intent에 플래그를 지정하는 방법이다 Intent intent = new Intent(this, NextActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); CLEAR_TASK와 NEW_TASK 플래그오 인해 액티비티..
xml로 레이아웃을 구성하면 쉽고 눈에 잘 확인할 수 있는 장점이 있다 다만 고정적으로 필요한 요소들만 만들어두어야 한다 그렇다면 필요에 의해 만들어야 하는 요소들은 자바 코드로 프로그래밍 해야 한다 LinearLayout linearLayout = new LinearLayout(getContext()); linearLayout.serOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTNETN); button.setLayoutPa..
액티비티에서 특정 작업을 수행한 후에 프래그먼트를 생성하기를 원할 때가 있다 하지만 레이아웃에서 프래그먼트의 id를 지정하기 때문에 바로 프래그먼트를 만든다 이렇게 되면 프래그먼트에 null 값이 전달되어 오류로 인한 강제종료 문제가 발생할 수 있다 이 문제는 간단하게 해결이 가능하다 액티비티에서 Fragment를 바로 만들도록 레이아웃에서 Fragment를 넣을 것이 아니라 FrameLayout을 넣으면 해결된다 android:name="com.example.application.MyFragment"를 통해 프래그먼트의 onCreateView() 함수를 호출하기 때문에 생기는 문제이다 FrameLayout으로 수정하면 프래그먼트의 onCreateView()를 호출하지 않기 때문에 문제가 생기지 않는다 ..
안드로이드 어플에서 비밀번호를 관리해야 할 일이 있어 해싱 함수를 적용했다 java에서도 같은 방식으로 이용할 수 있다 public String hashing(String str) { String result; try { MessageDigest sh = MessageDigest.getInstance("SHA-256"); sh.update(str.getBytes()); byte byteData[] = sh.digest(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString(byteData[i] & 0xff + 0x100, 16).substring(1)); } r..
파이어베이스의 컬렉션에 임의의 이름을 가진 문서를 추가하려고 한다 처음에는 별도의 추가 함수가 존재할 것이라 생각했지만 파이어베이스 도큐먼트에서 확인해보니 문서를 추가하면 자동으로 컬렉션이 만들어진다고 한다 Map data = new HashMap(); db.collection("books") .add(data) .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(DocumentReference documentReference) { } }); 위의 코드를 살펴보면 "books" 컬렉션에 data 문서를 추가하게 된다 "books" 컬렉션이 존재하고 있다면 그 안에 문서를 추가하겠지만 컬렉션이 존재하지 않는 상태라면..
파이어베이스의 FireStore를 사용하다보면 쿼리 검색의 결과를 Query로 돌려준다 Query에서 원하는 필드의 값을 얻는 방법은 의외로 간단하다 db.collection("books").document(group).collection("contents") .whereLessThan("timestamp", new Timestamp(new Date(year - 1900, month, 0))) .whereGreaterThanOrEqualTo("timestamp", new Timestamp(new Date(year - 1900, month - 1, 0))) .get() .addOnSuccessListener(new OnSuccessListener() { @Override public void onSucce..
안드로이드에서 기본적으로 지원하는 CalendarView의 날짜를 선택했을 때 리스너를 구현할 수 있다 calendarView = (CalendarView) view.findViewById(R.id.calendarView); calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { // todo } }); 위의 코드에서 todo 부분에 날짜 선택 시 원하는 동작을 프로그래밍하면 된다 onSelectedDayChange() 함수에 ..
RecyclerView를 활용할 때 직관성을 높이기 위해 스와이프를 사용하여 삭제 기능을 구현하려고 한다 ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT) { @Override public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { return false; } @Override public void onSwiped(@N..
RecyclerView를 이용할 때 각 항목들이 여백없이 붙게 된다 각 항목에 여백을 주고 싶다면 RecyclerView에 ItemDecoration을 추가해줘야 한다 myItemDecoration.java public class myItemDecoration extends RecyclerView.ItemDecoration { private final int padding = 5; // 여백을 5로 설정 @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); outRect..
- Total
- Today
- Yesterday
- android
- layout
- 안드로이드 여백
- 안드로이드
- Android Studio
- 안드로이드 스튜디오
- 스튜디오
- calendarView
- Alfred
- 파이어스토어
- activity
- eggtimer
- androidx
- recyclrView
- 프래그먼트
- RecyclerView padding
- firestore
- round border
- 뒤로가기
- intent
- 파이어베이스
- 레이아웃
- 액티비티
- wrap_content
- RecyclerView 여백
- 에그타이머
- java
- Firebase
- 안드로이드 레이아웃
- RecyclerView Swipe
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |