안드로이드스튜디오

안드로이드 기능 구현의 단계별 설명

연습노트 2024. 9. 15. 22:50

안드로이드 기능 구현의 단계별 설명

1. 버튼 클릭 이벤트 처리

가장 기본적인 기능 구현 중 하나로, 버튼을 클릭했을 때 특정 동작이 실행되도록 하는 방법입니다.

  1. 버튼 추가 (XML 파일에서)
  2.  
    코드 복사
    <Button android:id="@+id/myButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me"/>
  3. xml
  4. 이벤트 처리 (Java/Kotlin 파일에서)
  5. java
    코드 복사
    Button myButton = findViewById(R.id.myButton); myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 버튼 클릭 시 실행할 코드 Toast.makeText(getApplicationContext(), "버튼이 클릭되었습니다!", Toast.LENGTH_SHORT).show(); } });

2. 화면 전환 (Activity 간 이동)

앱에서 화면 전환을 구현하려면 인텐트(Intent)를 사용하여 새로운 액티비티를 시작할 수 있습니다.

  1. 새로운 액티비티 생성
    • 안드로이드 스튜디오에서 New > Activity > Empty Activity를 선택하여 새로운 액티비티를 생성합니다.
  2. 화면 전환 코드 (MainActivity에서 새 화면으로 이동)
  3. java
    코드 복사
    Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);

3. 데이터 전달 및 수신

Activity 간 데이터를 주고받을 때는 Intent의 Extra를 사용합니다.

  1. 데이터 보내기 (MainActivity)
  2. java
    코드 복사
    Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("message", "안녕하세요!"); startActivity(intent);
  3. 데이터 받기 (SecondActivity)
  4. java
    코드 복사
    String message = getIntent().getStringExtra("message"); TextView textView = findViewById(R.id.textView); textView.setText(message);

4. 리스트뷰 및 리사이클러뷰 구현

데이터 리스트를 보여줄 때 자주 사용하는 UI 요소입니다.

  1. 리사이클러뷰 추가 (XML 파일)
  2. xml
    코드 복사
    <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content"/>
  3. 리사이클러뷰 어댑터 설정
    • 어댑터는 데이터와 리스트 아이템을 연결해주는 역할을 합니다.
    java
    코드 복사
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<String> dataList; public MyAdapter(List<String> dataList) { this.dataList = dataList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.textView.setText(dataList.get(position)); } @Override public int getItemCount() { return dataList.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView textView; public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } }
  4. 리사이클러뷰 설정 (MainActivity)
  5. java
    코드 복사
    RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); List<String> dataList = Arrays.asList("Item 1", "Item 2", "Item 3"); MyAdapter adapter = new MyAdapter(dataList); recyclerView.setAdapter(adapter);

5. 데이터 저장 및 로드 (SharedPreferences)

앱의 간단한 설정이나 작은 데이터를 저장할 때 유용합니다.

  1. 데이터 저장
  2. java
    코드 복사
    SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("username", "Thinkbot"); editor.apply();
  3. 데이터 로드
  4. java
    코드 복사
    SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE); String username = sharedPreferences.getString("username", "default");

6. 네트워크 요청 (Retrofit을 사용한 REST API 통신)

서버와 통신하여 데이터를 주고받기 위해 Retrofit 라이브러리를 사용할 수 있습니다.

  1. Retrofit 설정
    • build.gradle에 Retrofit 의존성을 추가합니다.
    groovy
    코드 복사
    implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
  2. API 인터페이스 정의
  3. java
    코드 복사
    public interface ApiService { @GET("users") Call<List<User>> getUsers(); }
  4. Retrofit 인스턴스 생성 및 사용
  5. java
    코드 복사
    Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); Call<List<User>> call = apiService.getUsers(); call.enqueue(new Callback<List<User>>() { @Override public void onResponse(Call<List<User>> call, Response<List<User>> response) { if (response.isSuccessful()) { List<User> users = response.body(); // 사용자 목록 처리 } } @Override public void onFailure(Call<List<User>> call, Throwable t) { // 오류 처리 } });

7. 권한 요청 (예: 카메라, 위치 권한)

안드로이드 6.0 이상에서는 앱에서 특정 권한을 사용하려면 사용자에게 직접 권한을 요청해야 합니다.

  1. 권한 요청 코드 (Java)
  2. java
    코드 복사
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 100); }
  3. 권한 결과 처리
  4. java
    코드 복사
    @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == 100) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 권한이 허용됨 } else { // 권한이 거부됨 } } }