250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- java
- 파이썬
- 개발
- Android Studio
- javascript
- mongodb
- 블로그 만들기
- mern Stack
- Android
- androidstudio
- 중국어
- 알고리즘
- 자바스크립트
- nodejs
- 블로그만들기
- PYTHON
- MernStack
- react
- es6
- Django
- 자바
- 장고
- 중국어입문
- 안드로이드
- 안드로이드스튜디오
- express
- 입문
- 리액트
- Node js
- 안드로이드 스튜디오
Archives
- Today
- Total
City At Night
[Androi Studio] CustomDialog로 내가 원하는 팝업창 만들기! 본문
728x90
반응형
Custom Dialog는 팝업창에 또 하나의 레이아웃을 추가하여 보여주는 방식입니다.
그러므로 내가 원하는 기능 또는 디자인을 팝업창으로 보여줄 수 있는 장점이 있어 많이 사용합니다.
순서는 이렇습니다.
1. Custom Dialog의 Layout 작성.
2. Custom Dialog의 class를 작성.
3. MainActivity에서 마무리 작업( 다이어로그 띄우기, 다이어로그 밖 화면 어둡게 흐리게 하기)
<activity_custom_dialog.xml>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="344dp"
android:layout_height="446dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.492"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.109">
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="160dp"
android:text="Contents"
android:gravity="center"
android:textAlignment="center"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.033" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="342dp"
android:layout_height="327dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5"
app:layout_constraintVertical_bias="0.0">
<TextView
android:id="@+id/txt_contents"
android:layout_width="340dp"
android:layout_height="330dp"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
<Button
android:id="@+id/btn_shutdown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Done"
android:onClick="shutDownClick"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<CustomDialog.java>
public class CustomDialog extends Dialog {
private TextView txt_contents;
private Button shutdownClick;
public CustomDialog(@NonNull Context context, String contents) {
super(context);
setContentView(R.layout.activity_custom_dialog);
txt_contents = findViewById(R.id.txt_contents);
txt_contents.setText(contents);
shutdownClick = findViewById(R.id.btn_shutdown);
shutdownClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
}
저는 Main에서 값을 넘겨주기 위해 contents의 값을 추가했습니다.
dismiss(); 는 버튼을 눌렀을시 창을 닫아주는 함수입니다.
<MainActivity.java>
public class MainActivity extends AppCompatActivity {
private CustomDialog customDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//다이얼로그 밖의 화면은 흐리게 만들어줌
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
layoutParams.dimAmount = 0.8f;
getWindow().setAttributes(layoutParams);
}
public void btnOnclick(View view) {
switch (view.getId()){
case R.id.button:
customDialog = new CustomDialog(this,"다이어로그에 들어갈 내용입니다.");
customDialog.show();
break;
}
}
}
CustomDialog생성자의 두번째 파라미터값으로 아까 추가한 contents값입니다!. 저 안에 메세지를 전달하면 됩니다.
Alert Dialog는 Android에서 제공해주는것이기에 AlertDialog가 띄워지면 자동으로 밖의 화면은 어두워져 집중효과를 주지만 Custom Dialog는 말 그대로 처음부터 Custom을 하기에 코드를 넣어줘야 밖이 어두워지는 효과를 낼 수 있습니다.
728x90
반응형
'Android Studio' 카테고리의 다른 글
[Android Studio] RecyclerView를 사용하여 데이터를 추가해보자! (0) | 2021.01.30 |
---|---|
[Android Studio] SharedPreferences로 간단한 데이터 저장하기! (0) | 2021.01.24 |
[Android Studio] AlertDialog로 팝업 메세지를 띄워보자! (0) | 2021.01.24 |
[Android Studio] Toast로 메세지 띄우기! (0) | 2021.01.23 |
[Android Studio] Layout 이동! intent (0) | 2021.01.23 |
Comments