Posts Android 위젯(Context)
Post
Cancel

Android 위젯(Context)

  • Development Env.
  • post date : 2019. 11. 05
  • OS : macOS Catalina 64bit
  • Java version : JDK 1.8.0 J_220 JRE8
  • Android : Pie(9.0)
  • Eclipse : 2019-06 (4.12.0)

Context

MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
	public class MainActivity extends AppCompatActivity {

	/*변수선언한 부분*/
	...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv1 = findViewById(R.id.iv1);
        iv1.setImageResource(R.mipmap.iv1);
        
		//Context Menu 이용할 시에 액션을 받을 객체를 셋팅해준다.
        registerForContextMenu(iv1);


    }

   ...

}

Option Menu를 구현할 시,

1
2
3
4
5
6
7
8
9
10
11
12
13
	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.context_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        handlerContextAction(item);

        return true;
    }

Context Menu를 구현할 시,

  • 기본으로 길게 터치할 시, 액션이 실행됨으로 앱을 만들고 클릭해서 반응하지 않는다고 당황하지 말자.
1
2
3
4
5
6
7
8
9
10
11
12
13
	@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.context_menu, menu);

    }

    @Override
    public boolean onContextItemSelected(@NonNull MenuItem item) {
        handlerContextAction(item);
        return true;
    }

함수화한 메뉴 구현부

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void handlerContextAction(MenuItem item){
        switch (item.getItemId()) {
            case R.id.option1:
                rotValue = rotValue + 45f;
                iv1.setRotation(rotValue);
                break;
            case R.id.option2:
                ivSize = ivSize+1f;
                iv1.setScaleX(ivSize);
                iv1.setScaleY(ivSize);
                break;
            case R.id.option3:
                ivSize = ivSize-1f;
                iv1.setScaleX(ivSize);
                iv1.setScaleY(ivSize);
                break;
            default:
                break;
        }
    }

res/menu

메뉴에 대한 xml 파일을 만든다.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/option1"
        android:title="회전" />
    <item
        android:id="@+id/option2"
        android:title="확대" />
    <item
        android:id="@+id/option3"
        android:title="축소" />
        
    //하위 메뉴그룹을 만들고 싶을 때,
    <item android:title="Button Change">

        <menu>
            <item
                android:id="@+id/subRotate"
                android:title="Rot 45">
            </item>
            <item
                android:id="@+id/subSize"
                android:title="View Size">
            </item>

        </menu>
    </item>
    
    
    //RadioButton으로 메뉴를 만들고 싶을 때, (참고로 멀티로 하면 체크박스가 된다.)
     <group android:checkableBehavior="single" >
        <item
            android:id="@+id/item1"
            android:checked="true"
            android:title="한라산">
        </item>
        <item
            android:id="@+id/item2"
            android:title="추자도">
        </item>
        <item
            android:id="@+id/item3"
            android:title="범섬">
        </item>
    </group>


    </menu>
This post is licensed under CC BY 4.0 by the author.