일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디오판투스 알고리즘
- 개인정보안전성
- pwnable.tw
- 웹 프레임워크
- 한국정보보호산업협회
- 유클리드_알고리즘
- 가명정보처리
- arrow function
- 백엔드입문
- 국가인적자원개발컨소시엄
- Writeup
- 개인정보보호
- 개인정보보호위원회
- 무료교육
- 확장 유클리드 알고리즘
- 덧셈 암호
- 한국정보보호산업협회기자단
- 포너블
- 곱셈 암호
- 동적타이핑
- 개인정보보호교육
- 한국산업인력공단
- package-lock.json
- 호이스팅
- 마감임박
- 모듈러 연산
- node.js
- package.json
- 백엔드
- function scope
- Today
- Total
짱짱해커가 되고 싶은 나
07-2. 토스트 & 대화상자 본문
* Toast
- makeText(context, message, duration)
context는 현재 화면(액티비티)를 표시하기 위해 this를 주로 사용(내부 클래스에서는 액티비티명.this)
- setGravitiy(gravity, xOffset, yOffset)
- show()
진짜 스트레스 나는 setGravitiy가 적용이 안된다;; setGravitiy()하고 show()했는데에에에에!!!
왜인지는 모르겠는데 toast 뷰를 inflate 해서 하면 적용이 된다.. 왜 이러는지 아는사람..........ㅠㅠㅠ
<activity_main.xml>
<?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:gravity="center"
android:id="@+id/baseLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="메시지 출력"/>
</LinearLayout>
<toast.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="토스트 연습"/>
</LinearLayout>
<MainActivity.java>
package com.example.menu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Point;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Display;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
View toastView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("토스트 연습");
final Button btn1 = (Button)findViewById(R.id.btn1);
toastView = (View)View.inflate(MainActivity.this, R.layout.toast, null);
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast msg = new Toast(MainActivity.this);
msg.setView(toastView);
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int xOffset = (int)(Math.random() * display.getWidth());
int yOffset = (int)(Math.random() * display.getHeight());
msg.setGravity(Gravity.TOP|Gravity.LEFT, xOffset, yOffset);
msg.show();
}
});
}
}
* 대화상자(dialog)
화면에 메시지를 나타낸 후 확인/취소 같은 사용자의 선택을 받아들이는 경우 사용
package com.example.message;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("제목입니다");
dlg.setMessage("이곳이 내용입니다");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "확인을 눌렀네요", Toast.LENGTH_SHORT).show();
}
});
dlg.show();
}
});
}
}
- AlertDialog.Builder 를 이용해 생성한다.
- setTitle() : 제목 설정
- setMessage() : 내용 입력
- setPositivieButton(text, 리스너)
new AlertDialog.Builder(MainActivity.this).
setTitle("제목입니다")
.setMessage("이곳이 내용입니다")
.setIcon(R.mipmap.ic_launcher).show();
이런 식으로도 사용 가능하다. (함수들의 반환값이 모두 AlertDialog.Builder 이기 때문)
* 목록 대화상자
대화상자에 리스트 형태의 목록을 출력하고 그 중 하나를 선택하게 할 수 있다.
package com.example.message;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String[] versionArray = new String[]{"오레오", "파이", "큐(10)"};
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("좋아하는 버전은?");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btn.setText(versionArray[which]);
}
});
dlg.setPositiveButton("닫기", null);
dlg.show();
}
});
}
}
- setItems(문자열 배열, 리스너) : onClick()에서 which는 목록의 index에 해당하고 목록을 선택하면 대화상자가 자동으로 닫힌다.
- setSingleChoiceItems(문자열 배열, 초기 선택 번호, 리스너) : 라디오버튼 형식으로 선택해도 대화상자가 닫히지 않는다.
dlg.setSingleChoiceItems(versionArray, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btn.setText(versionArray[which]);
}
});
- setMultiChoiceItems(문자열 배열, 체크 여부, 리스너) : 체크박스 형태로 여러개 선택이 가능하며 선택해도 대화상자가 닫히지 않는다. 이 때 문자열 배열의 수와 체크 배열의 수는 같아야 한다.
final boolean[] checkArray = new boolean[]{true, false, false};
dlg.setMultiChoiceItems(versionArray, checkArray, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
btn.setText(versionArray[which]);
}
});
'모바일' 카테고리의 다른 글
08-1. 파일 처리 (0) | 2021.02.22 |
---|---|
07-3. 메뉴/토스트/다이얼로그 연습 (0) | 2021.02.20 |
07-1. 메뉴 (0) | 2021.02.20 |
06-4. 뷰 컨테이너 연습 (0) | 2021.02.19 |
06-3. 뷰 컨테이너 (0) | 2021.02.19 |