on
옵션메뉴, 컨텍스트 메뉴, 대화상자
옵션메뉴, 컨텍스트 메뉴, 대화상자
-
좋아요
1) 옵션메뉴
- Java 코드
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("배경색 바꾸기"); baseLayout = (LinearLayout) findViewById(R.id.baseLayout); button1 = (Button) findViewById(R.id.button1); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater mInflater = getMenuInflater(); mInflater.inflate(R.menu.menu1, menu); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.itemRed: baseLayout.setBackgroundColor(Color.RED); return true; case R.id.itemGreen: baseLayout.setBackgroundColor(Color.GREEN); return true; case R.id.itemBlue: baseLayout.setBackgroundColor(Color.BLUE); return true; case R.id.subRotate: button1.setRotation(45); return true; case R.id.subSize: button1.setScaleX(2); return true; } return false; }
-> menu1.xml을 생성하지 않고 Java코드로만 구현
public class MainActivity extends AppCompatActivity { LinearLayout baseLayout; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("배경색 바꾸기"); baseLayout = (LinearLayout) findViewById(R.id.baseLayout); button1 = (Button) findViewById(R.id.button1); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, 1, 0, "배경색 (빨강)"); menu.add(0, 2, 0, "배경색 (초록)"); menu.add(0, 3, 0, "배경색 (파랑)"); SubMenu sMenu = menu.addSubMenu("버튼 변경 >>"); sMenu.add(0, 4, 0, "버튼 45도 회전"); sMenu.add(0, 5, 0, "버튼 2배 확대"); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case 1: baseLayout.setBackgroundColor(Color.RED); return true; case 2: baseLayout.setBackgroundColor(Color.GREEN); return true; case 3: baseLayout.setBackgroundColor(Color.BLUE); return true; case 4: button1.setRotation(45); return true; case 5: button1.setScaleX(2); return true; } return false; } }
2) 컨택스트 메뉴(contextMenu) - 버튼을 길게 클릭하면 메뉴가 나옴
public class MainActivity extends AppCompatActivity { LinearLayout baseLayout; Button button1, button2; ImageView imageView1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("동물 바꾸기(컨텍스트 메뉴)"); baseLayout = (LinearLayout) findViewById(R.id.baseLayout); button1 = (Button) findViewById(R.id.button1); registerForContextMenu(button1); button2 = (Button) findViewById(R.id.button2); registerForContextMenu(button2); imageView1 = (ImageView) findViewById(R.id.imageView1); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater mInflater = getMenuInflater(); if (v == button1) { menu.setHeaderTitle("동물 선택"); mInflater.inflate(R.menu.menu1, menu); } if (v == button2) { mInflater.inflate(R.menu.menu2, menu); } } @Override public boolean onContextItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.itemRed: baseLayout.setBackgroundColor(Color.RED); imageView1.setImageResource(R.drawable.dog3); return true; case R.id.itemGreen: baseLayout.setBackgroundColor(Color.GREEN); imageView1.setImageResource(R.drawable.cat1); return true; case R.id.itemBlue: baseLayout.setBackgroundColor(Color.BLUE); imageView1.setImageResource(R.drawable.rabbit); return true; case R.id.subRotate: imageView1.setRotation(45); return true; case R.id.subSize: imageView1.setScaleX(2); return true; } return false; } }
3) 토스트(Toast) - x와 y좌표에 토스트 메세지 출력하기
inal Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Toast tMsg = Toast.makeText(MainActivity.this, "토스트 연습", Toast.LENGTH_SHORT); Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)) .getDefaultDisplay(); int xOffset = (int) (Math.random() * display.getWidth()); int yOffset = (int) (Math.random() * display.getHeight()); tMsg.setGravity(Gravity.TOP | Gravity.LEFT, xOffset, yOffset); tMsg.show(); } });
4) 기본 대화상자(AlertDialog) - 화면에 메세지를 나타낸 후 확인이나 취소 같은 사용자의 선택을 받아들임
button1.setOnClickListener(new View.OnClickListener() { 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() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "확인을 눌렀네요", Toast.LENGTH_SHORT).show(); } }); dlg.show(); } });
from http://zoo-coding.tistory.com/9 by ccl(A) rewrite - 2021-12-31 04:28:19