1. 그리드뷰(GridView)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.gridview_01.GridView_01Activity">
<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gridView01"
android:columnWidth="100dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
>
</GridView>
</LinearLayout>
<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"
android:orientation="vertical"
>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/imageView01"
android:src="@mipmap/ic_launcher"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView01"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:background="#aa0000"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textEmail"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:background="#00aa00"
/>
</LinearLayout>
<gridview.xml>
package org.android.soldesk.gridview_01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
import java.util.ArrayList;
public class GridView_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_view_01);
ArrayList<MyCustomDTO> list = new ArrayList<>();
list.add(new MyCustomDTO("무서운 호랑이","a@naver.com",R.drawable.a));
list.add(new MyCustomDTO("무서운 호랑이","a@naver.com",R.drawable.a));
list.add(new MyCustomDTO("무서운 호랑이","a@naver.com",R.drawable.a));
list.add(new MyCustomDTO("안무서운 사자","b@naver.com",R.drawable.b));
list.add(new MyCustomDTO("안무서운 사자","b@naver.com",R.drawable.b));
list.add(new MyCustomDTO("안무서운 사자","b@naver.com",R.drawable.b));
list.add(new MyCustomDTO("귀여운 뱀","c@naver.com",R.drawable.c));
list.add(new MyCustomDTO("귀여운 뱀","c@naver.com",R.drawable.c));
list.add(new MyCustomDTO("귀여운 뱀","c@naver.com",R.drawable.c));
list.add(new MyCustomDTO("무서운 코끼리","d@naver.com",R.drawable.d));
list.add(new MyCustomDTO("무서운 코끼리","d@naver.com",R.drawable.d));
list.add(new MyCustomDTO("무서운 코끼리","d@naver.com",R.drawable.d));
list.add(new MyCustomDTO("목이 긴 기린","e@naver.com",R.drawable.e));
list.add(new MyCustomDTO("목이 긴 기린","e@naver.com",R.drawable.e));
list.add(new MyCustomDTO("목이 긴 기린","e@naver.com",R.drawable.e));
GridView grid = (GridView) findViewById(R.id.gridView01);
MyCustomAdapter adapter = new MyCustomAdapter(getApplicationContext(),
R.layout.gridview,list);
grid.setAdapter(adapter);
}
}
<java>
package org.android.soldesk.gridview_01;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by soldesk on 2017-03-22.
*/
public class MyCustomAdapter extends BaseAdapter {
Context ctx;
int layout;
ArrayList<MyCustomDTO> list;
LayoutInflater inf;
public MyCustomAdapter(Context ctx, int layout, ArrayList<MyCustomDTO> list) {
this.ctx = ctx;
this.layout = layout;
this.list = list;
inf = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
{
convertView = inf.inflate(layout,null);
}
ImageView imgIcon = (ImageView) convertView.findViewById(R.id.imageView01);
TextView txtName = (TextView) convertView.findViewById(R.id.textView01);
TextView txtEmail = (TextView) convertView.findViewById(R.id.textEmail);
MyCustomDTO dto = list.get(position);
imgIcon.setImageResource(dto.getImgPhoto());
txtName.setText(dto.getName());
txtEmail.setText(dto.getEmail());
return convertView;
}
}
<MyCustomAdapter.java>
package org.android.soldesk.gridview_01;
/**
* Created by soldesk on 2017-03-22.
*/
public class MyCustomDTO {
String name;
String email;
int imgPhoto;
public MyCustomDTO(String name, String email, int imgPhoto) {
this.name = name;
this.email = email;
this.imgPhoto = imgPhoto;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getImgPhoto() {
return imgPhoto;
}
public void setImgPhoto(int imgPhoto) {
this.imgPhoto = imgPhoto;
}
}
<MyCustomDTO.java>
2. 옵션메뉴(OptionMenu)
|
|
package org.android.soldesk.myoptionmenu_01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MyOptionMenu_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_option_menu_01);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.item01:
Log.i("Mymenu","item01");
break;
case R.id.item02:
Log.i("Mymenu","item02");
break;
case R.id.item03:
Log.i("Mymenu","item03");
break;
case R.id.item04:
Log.i("Mymenu","item04");
break;
case R.id.item05:
Log.i("Mymenu","item05");
break;
case R.id.item06:
Log.i("Mymenu","item06");
break;
}
return true;
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item01"
android:title="전화"/>
<item android:id="@+id/item02"
android:title="채팅"/>
<item android:id="@+id/item03"
android:title="이메일"/>
<item android:id="@+id/item04"
android:title="삭제"/>
<item android:id="@+id/item05"
android:title="사진"/>
<item android:id="@+id/item06"
android:title="로그인"/>
</menu>
<xml>
3. MyOptionMenu_02
package org.android.soldesk.myoptionmenu_02;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MyOptionMenu_02Activity extends AppCompatActivity {
boolean isLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_option_menu_02);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
if (isLogin)
{
menu.getItem(5).setTitle("LogOut"); // 6 번째 메뉴아이템
isLogin = false;
}
else
{
menu.getItem(5).setTitle("LogIn"); // 6 번째 메뉴아이템
isLogin = true;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.item01:
Log.i("Mymenu","item01");
break;
case R.id.item02:
Log.i("Mymenu","item02");
break;
case R.id.item03:
Log.i("Mymenu","item03");
break;
case R.id.item04:
Log.i("Mymenu","item04");
break;
case R.id.item05:
Log.i("Mymenu","item05");
break;
case R.id.item06:
Log.i("Mymenu","item06");
break;
}
return true;
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item01"
android:title="전화"/>
<item android:id="@+id/item02"
android:title="채팅"/>
<item android:id="@+id/item03"
android:title="이메일"/>
<item android:id="@+id/item04"
android:title="삭제"/>
<item android:id="@+id/item05"
android:title="사진"/>
<item android:id="@+id/item06"
android:title="로그인"/>
</menu>
<xml>
4. 이메일을 누르면 이름이 뜨도록 하시오.
package org.android.soldesk.myoptionmenu_02;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MyOptionMenu_02Activity extends AppCompatActivity {
boolean isLogin;
boolean isLogin1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_option_menu_02);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
if (isLogin)
{
menu.getItem(5).setTitle("LogOut"); // 6 번째 메뉴아이템
isLogin = false;
}
else
{
menu.getItem(5).setTitle("LogIn"); // 6 번째 메뉴아이템
isLogin = true;
}
if (isLogin1)
{
menu.getItem(2).setTitle("emali"); // 6 번째 메뉴아이템
isLogin1 = false;
}
else
{
menu.getItem(2).setTitle("이름"); // 6 번째 메뉴아이템
isLogin1 = true;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.item01:
Log.i("Mymenu","item01");
break;
case R.id.item02:
Log.i("Mymenu","item02");
break;
case R.id.item03:
Log.i("Mymenu","item03");
if(isLogin) isLogin = false;
else isLogin = true;
break;
case R.id.item04:
Log.i("Mymenu","item04");
break;
case R.id.item05:
Log.i("Mymenu","item05");
break;
case R.id.item06:
Log.i("Mymenu","item06");
if(isLogin1) isLogin1 = false;
else isLogin1 = true;
break;
}
return true;
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item01"
android:title="전화"/>
<item android:id="@+id/item02"
android:title="채팅"/>
<item android:id="@+id/item03"
android:title="이메일"/>
<item android:id="@+id/item04"
android:title="삭제"/>
<item android:id="@+id/item05"
android:title="사진"/>
<item android:id="@+id/item06"
android:title="로그인"/>
</menu>
<mymenu.xml>
5. MyOptionMenu_03
package org.android.soldesk.myoptionmenu_03;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MyOptionMenu_03Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_option_menu_03);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
MenuItem item1 = menu.add(0,1,0,"사과");
item1.setIcon(R.drawable.a);
item1.setAlphabeticShortcut('a');
menu.add(0,2,0,"포도").setIcon(R.drawable.b);
menu.add(0,3,0,"바나나").setIcon(R.drawable.c);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case 1:
Toast.makeText(this,"사과",Toast.LENGTH_SHORT).show();
return true;
case 2:
Toast.makeText(this,"포도",Toast.LENGTH_SHORT).show();
return true;
case 3:
Toast.makeText(this,"바나나",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
<java>
6. 콘텍스트 메뉴(ContextMenu)
누르는 상태가 유지되어야 뜨는 메뉴
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.android.soldesk.contextmenu_01.ContextMenu_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="길게 길게 눌러~~~~"
/>
</LinearLayout>
<xml>
package org.android.soldesk.contextmenu_01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class ContextMenu_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_context_menu_01);
Button btnContext = (Button) findViewById(R.id.button01);
// 버튼을 컨택스트 메뉴로 지정
registerForContextMenu(btnContext);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.item01:
Log.i("Mymenu","item01");
break;
case R.id.item02:
Log.i("Mymenu","item02");
break;
case R.id.item03:
Log.i("Mymenu","item03");
break;
case R.id.item04:
Log.i("Mymenu","item04");
break;
case R.id.item05:
Log.i("Mymenu","item05");
break;
}
return true;
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item01"
android:title="전화"/>
<item android:id="@+id/item02"
android:title="이메일"/>
<item android:id="@+id/item03"
android:title="사진"/>
<item android:id="@+id/item04"
android:title="삭제"/>
<item android:id="@+id/item05"
android:title="로그인"/>
</menu>
<mymenu.xml>
7. ContextMenu_02
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.android.soldesk.contextmenu_02.ContextMenu_02Activity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView01"
android:text="Only I can change my life. No one can do it for me."
android:textSize="50dp"
android:typeface="serif"
/>
</LinearLayout>
<xml>
package org.android.soldesk.contextmenu_02;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class ContextMenu_02Activity extends AppCompatActivity {
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_context_menu_02);
text = (TextView) findViewById(R.id.textView01);
registerForContextMenu(text);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu,v,menuInfo);
menu.setHeaderTitle("컨텍스트 메뉴");
menu.add(0,1,0,"배경색 : RED");
menu.add(0,2,0,"배경색 : GREEN");
menu.add(0,3,0,"배경색 : BLUE");
menu.add(0,4,0,"배경색 : GOLD");
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case 1:
text.setBackgroundColor(Color.RED);
return true;
case 2:
text.setBackgroundColor(Color.argb(100,000,255,000));
return true;
case 3:
text.setBackgroundColor(Color.argb(200,000,000,255));
return true;
case 4:
text.setBackgroundColor(Color.argb(255,255,215,000));;
return true;
default:
return super.onContextItemSelected(item);
}
}
}
<java>
8. 팝업메뉴(PopupMenu)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.android.soldesk.mypopupmenu_01.MyPopupMenu_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="팝업메뉴"
/>
</LinearLayout>
<xml>
package org.android.soldesk.mypopupmenu_01;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
public class MyPopupMenu_01Activity extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_popup_menu_01);
Button btnPopup = (Button) findViewById(R.id.button01);
btnPopup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// popup 메뉴 생성
PopupMenu popup = new PopupMenu(getApplicationContext(),v);
// 이벤트 처리
popup.setOnMenuItemClickListener(MyPopupMenu_01Activity.this);
// 메뉴 아이템 설정
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.mymenu,popup.getMenu());
popup.show();
}
});
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId())
{
case R.id.item01:
Log.i("Mypopup","item01");
break;
case R.id.item02:
Log.i("Mypopup","item02");
break;
case R.id.item03:
Log.i("Mypopup","item03");
break;
case R.id.item04:
Log.i("Mypopup","item04");
break;
case R.id.item05:
Log.i("Mypopup","item05");
break;
case R.id.item06:
Log.i("Mypopup","item06");
break;
}
return false;
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item01"
android:title="전화"/>
<item android:id="@+id/item02"
android:title="채팅"/>
<item android:id="@+id/item03"
android:title="이메일"/>
<item android:id="@+id/item04"
android:title="삭제"/>
<item android:id="@+id/item05"
android:title="사진"/>
<item android:id="@+id/item06"
android:title="로그인"/>
</menu>
<mymenu.xml>
9. MyPopupMenu_02
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.android.soldesk.mypopupmenu_02.MyPopupMenu_02Activity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:onClick="onClick"
android:text="show popup menu" />
</LinearLayout>
<xml>
package org.android.soldesk.mypopupmenu_02;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MyPopupMenu_02Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_popup_menu_02);
}
public void onClick(View button)
{
PopupMenu popup = new PopupMenu(this,button);
popup.getMenuInflater().inflate(R.menu.popup,popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(getApplicationContext(),"클릭된 팝업 메뉴" + item.getTitle(),
Toast.LENGTH_SHORT).show();
return false;
}
});
popup.show();
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/search"
android:title="search"
android:icon="@mipmap/ic_launcher"/>
<item
android:id="@+id/add"
android:title="add"
android:icon="@mipmap/ic_launcher">
<menu>
<item
android:id="@+id/a"
android:title="share"
android:icon="@color/colorPrimary"/>
<item
android:id="@+id/b"
android:title="copy"
android:icon="@color/colorPrimary"/>
</menu>
</item>
<item
android:id="@+id/edit"
android:title="edit"
android:icon="@mipmap/ic_launcher">
<menu>
<item
android:id="@+id/share"
android:title="share"
android:icon="@color/colorPrimary"/>
<item
android:id="@+id/copy"
android:title="copy"
android:icon="@color/colorPrimary"/>
</menu>
</item>
</menu>
<popup.xml>