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>


+ Recent posts