ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 옵션메뉴, 컨텍스트 메뉴, 대화상자
    안드로이드 스튜디오 2021. 12. 31. 03:30

    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();
                }
            });

    댓글

Designed by Tistory.