이번 시간에는 이전에 이어서 연락처
상세화면 만드는 방법을 알아보겠습니다.
이전 포스팅을 먼저 보시고 오시면 됩니다.
2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회
앞으로 SQLite, RecyclerView를 통해서 연락처 만드는 방법을 알아보겠습니다. 내용이 많다 보니 조회, 등록, 수정, 삭제 별로 나눠 올리겠습니다. 이번에는 조회 부분입니다. 목차 1. 실행 화면 2. 연락
aries574.tistory.com
2022.03.03 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록
이번 시간에는 이전에 이어서 연락처 등록하는 방법을 알아보겠습니다. 이전 포스팅을 먼저 보고 오시면 됩니다. 2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 -
aries574.tistory.com
app -> 마우스 오른쪽 -> New -> Activity -> Empty Activity
Activity Name: DetailActivity
- 설명 -
1. 메인화면에서 데이터를 받아서 보여주는 화면입니다.
2. 이미지 뷰, 에디트 텍스트로 구성되어있습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".DetailActivity">
<ImageView
android:id="@+id/update_image_view"
android:layout_width="128dp"
android:layout_height="128dp"
android:scaleType="centerCrop"
android:src="@drawable/photo" />
<EditText
android:id="@+id/update_name_edit"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:hint="이름"
android:inputType="text" />
<EditText
android:id="@+id/update_phone_edit"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:hint="전화번호"
android:inputType="phone" />
</LinearLayout>
- 설명 -
1. getAndSetIntentData: 연락처 어뎁터를 통해 전달받은 데이터를 화면에 보여줍니다.
public class DetailActivity extends AppCompatActivity {
EditText updateNameEdit, updatePhoneEdit;
ImageView updateImageView;
String id, name, phoneNumber;
byte[] image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
updateNameEdit = findViewById(R.id.update_name_edit); //이름
updatePhoneEdit = findViewById(R.id.update_phone_edit); //번호
updateImageView = findViewById(R.id.update_image_view); //사진
getAndSetIntentData();
}
/**
* 데이터 가져와서 화면에 보여주기
*/
public void getAndSetIntentData() {
if (getIntent().hasExtra("id") && getIntent().hasExtra("name") &&
getIntent().hasExtra("phone_number") && getIntent().hasExtra("image")) {
//데이터 가져오기
id = getIntent().getStringExtra("id");
name = getIntent().getStringExtra("name");
phoneNumber = getIntent().getStringExtra("phone_number");
image = getIntent().getByteArrayExtra("image");
//데이터 넣기
updateNameEdit.setText(name);
updatePhoneEdit.setText(phoneNumber);
Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
updateImageView.setImageBitmap(bitmap);
}
}
}
- 설명 -
1. 이미지를 전달하는 과정에서 이미지 크기로 인한 오류로 인해서
사이즈 조절하는 코드를 추가했습니다.
/**
* 이미지 바이트로 변환
* @param image 이미지
* @return
*/
public static byte[] imageViewToByte(ImageView image){
Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
//사이즈 조절
Bitmap resize = Bitmap.createScaledBitmap(bitmap, 300, 400, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
//압축
resize.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
return byteArray;
}
- 설명 -
1. 리스트화면에서 해당 아이템을 클릭하면 상세화면으로 이동하는
코드를 추가했습니다.
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
PhoneBook phone = phoneList.get(position);
holder.id_text.setText(phone.getPhone_id()); //아이디
holder.name_text.setText(phone.getPhone_name());//이름
byte[] phoneImage = phone.getUser_image();
Bitmap bitmap = BitmapFactory.decodeByteArray(phoneImage, 0, phoneImage.length);
holder.imageView.setImageBitmap(bitmap);
//상세화면 이동
holder.mainLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("id", phone.getPhone_id());
intent.putExtra("name", phone.getPhone_name());
intent.putExtra("phone_number", phone.getPhone_number());
intent.putExtra("image", phoneImage);
context.startActivity(intent);
}
});
}
- 설명 -
1. 상세화면에서 뒤로 가기 버튼을 누르면 메인화면으로 가는 코드입니다.
<activity
android:name=".DetailActivity"
android:exported="false"
android:parentActivityName=".MainActivity"
/>
2022.03.01 - [안드로이드] - [안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법
[안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법
이번 시간에는 앱 실행 시에 앱에 관한 설명들을 페이지 형태로 넘겨가면서 보여주는 형태인 온보딩(Onboarding) 페이지 만드는 방법에 대하여 알아보겠습니다. 1. 실행 화면 2. 라이브러리 등록
aries574.tistory.com
2022.02.28 - [안드로이드] - [안드로이드] 알림(Alerter) 쉽게 만드는 방법
[안드로이드] 알림(Alerter) 쉽게 만드는 방법
이번 시간에는 알림(Alerter) 쉽게 만드는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java 1. 실..
aries574.tistory.com
2022.02.27 - [안드로이드] - [안드로이드] 이미지(Image) 흐림 효과(Blur) 쉽게 주는 방법
[안드로이드] 이미지(Image) 흐림효과(Blur) 쉽게 주는 방법
이번 시간에는 이미지(Image) 흐림 효과(Blur)를 쉽게 주는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActi..
aries574.tistory.com
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part5 - 삭제 (0) | 2022.03.06 |
---|---|
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part4 - 수정 (0) | 2022.03.05 |
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록 (0) | 2022.03.03 |
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회 (2) | 2022.03.02 |
[안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법 (0) | 2022.03.01 |
댓글 영역