1. CustomToast
<?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.customtoast_01.CustomToast_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnToast"
android:text="커스텀 토스트 출력하기"/>
</LinearLayout>
<xml>
package org.android.soldesk.customtoast_01;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class CustomToast_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_toast_01);
Button btnToast= (Button) findViewById(R.id.btnToast);
btnToast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inf= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View converView=inf.inflate(R.layout.custom,null);
Toast tt= Toast.makeText(getApplicationContext(),"출력 메시지",Toast.LENGTH_SHORT);
tt.setView(converView);
tt.setGravity(Gravity.CENTER_VERTICAL,0,0);
tt.show();
}
});
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:text="아름다운 꽃"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView01"
android:src="@drawable/f"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView02"
android:src="@drawable/g"
android:layout_gravity="center"/>
</LinearLayout>
<custom.xml>
2. Notification(알람 메세지에 이미지 추가)
|
|
<?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.mynotification_01.MyNotification_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnNoti"
android:text="알림 발생!!!!"
android:onClick="onNormal"
/>
</LinearLayout>
<xml>
package org.android.soldesk.mynotification_01;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
public class MyNotification_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_notification_01);
}
public void onNormal(View v)
{
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.f));
builder.setSmallIcon(android.R.drawable.ic_input_delete);
builder.setContentTitle("타이틀 ~~~~");
builder.setContentText("내용~~~~~~~~~~~~~~~~");
manager.notify(1,builder.build());
}
}
<java>
3. Notification_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.mynotification_02.MyNotification_02Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnNoti"
android:text="알림 발생!!!!"
android:onClick="onNormal"
/>
</LinearLayout>
<xml>
package org.android.soldesk.mynotification_02;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
public class MyNotification_02Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_notification_02);
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public void onNormal(View v) {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.f));
builder.setSmallIcon(android.R.drawable.ic_input_delete);
builder.setContentTitle("타이틀 ~~~~");
builder.setContentText("내용~~~~~~~~~~~~~~~~");
// InboxStyle 지정
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
String[] events = {"서울","부산","대구","대전","제주"};
inboxStyle.setBigContentTitle("지역명");
for (String str : events)
{
inboxStyle.addLine(str);
}
builder.setStyle(inboxStyle);
// 새로운 화면 설정 코드
Intent intent = new Intent(getApplicationContext(),getClass());
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(getClass());
stackBuilder.addNextIntent(intent);
PendingIntent resultIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_CANCEL_CURRENT);
builder.setContentIntent(resultIntent);
builder.setAutoCancel(true); // 알림 창에서 알림 선택시 알림 아이콘 삭제
manager.notify(1,builder.build());
}
}
<java>
4. 다이얼로그(Dialog)
<?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.mydialog_01.MyDialog_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="알림 경고 창"
android:onClick="onAlertShow"
/>
</LinearLayout>
<xml>
package org.android.soldesk.mydialog_01;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
public class MyDialog_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_dialog_01);
}
public void onAlertShow(View v)
{
MyDialogFragment frag = MyDialogFragment.newInstance();
frag.show(getFragmentManager(),"Tag");
}
public static class MyDialogFragment extends DialogFragment
{
public static MyDialogFragment newInstance()
{
return new MyDialogFragment();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("타이틀");
builder.setMessage("메시지 ~~~~~~");
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("MyTag","확인");
}
});
builder.setNegativeButton("취소",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("MyTag","Name");
}
});
return builder.create();
}
}
}
<java>
5. MyDialog_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.mydialog_02.MyDialog_02Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="알림 경고창"
android:onClick="onAlertShow"
/>
</LinearLayout>
<xml>
package org.android.soldesk.mydialog_02;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MyDialog_02Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_dialog_02);
}
public void onAlertShow(View v)
{
MyDialogFragment frag = MyDialogFragment.newInstance();
frag.show(getFragmentManager(),"TAG");
}
public static class MyDialogFragment extends DialogFragment
{
// 배열 생성
String[] data = new String[]{"AA","BB","CC"};
public static MyDialogFragment newInstance() {
return new MyDialogFragment();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("타이틀");
builder.setSingleChoiceItems(data,2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("MyTag",data[which]);
dialog.dismiss();// 다이얼로그 창 닫기
}
});
return builder.create();
}
}
}
<java>
6. CustomDialog_01
<?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.customdialog_01.CustomDialog_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="사용자 알림창"
android:onClick="onAlertPrint"
/>
</LinearLayout>
<xml>
package org.android.soldesk.customdialog_01;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
public class CustomDialog_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_dialog_01);
}
public void onAlertPrint(View v)
{
MyDialogFragement frag = MyDialogFragement.newInstance();
frag.show(getFragmentManager(),"TAG");
}
public static class MyDialogFragement extends DialogFragment{
public static MyDialogFragement newInstance()
{
return new MyDialogFragement();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inf= (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView=inf.inflate(R.layout.customdialog,null);
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
builder.setTitle("Title ~~~~~");
builder.setView(convertView);//커스텀 객체 설정
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("MyTag","확인");
}
});
return builder.create();
}
}
}
<java>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff995599">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TableRow android:id="@+id/tableRow01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/textView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="주소 : "
android:textAppearance="?android:attr/textAppearanceMedium"/>
<TextView
android:id="@+id/txtaddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="서울시 종로구 관철동 101 "
android:textAppearance="?android:attr/textAppearanceMedium"/>
</TableRow>
<TableRow android:id="@+id/tableRow02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/textView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="전화번호 : "
android:textAppearance="?android:attr/textAppearanceMedium"/>
<TextView
android:id="@+id/txtphonenumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="010-5678-3666 "
android:textAppearance="?android:attr/textAppearanceMedium"/>
</TableRow>
</TableLayout>
</LinearLayout>
<customdialog.xml>
7. DatePicker
<?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.datepicker_1.DatePicker_1Activity">
<DatePicker
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/datePicker01"
android:startYear="2013"
android:endYear="2018"
android:datePickerMode="spinner"
android:spinnersShown="true"
/>
</LinearLayout>
<xml>
package org.android.soldesk.datepicker_1;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.widget.CalendarView;
import android.widget.DatePicker;
import android.widget.Toast;
public class DatePicker_1Activity extends AppCompatActivity {
DatePicker picker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_date_picker_1);
picker = (DatePicker) findViewById(R.id.datePicker01);
//CalendarView 객체 얻기
CalendarView eView = picker.getCalendarView();
//이벤트 처리
eView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year,
int month, int dayOfMonth) {
String str = year + " 년" + month + "월 " + dayOfMonth + "일";
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
}
});
}
}
<java>
8. DatePickerDialog_01
<?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.datepickerdialog_01.DatePickerDialog_01Activity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="날짜지정"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button02"
android:text="시간지정"
/>
</LinearLayout>
<xml>
package org.android.soldesk.datepickerdialog_01;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.Toast;
import java.util.Calendar;
public class DatePickerDialog_01Activity extends AppCompatActivity {
Button btnSelectDate, btnSelectTime;
static final int DATE_DIALOG_ID = 0;
static final int TIME_DIALOG_ID = 1;
public int year,month,day,hour,minute;
private int mYear,mMonth,mDay,mHour,mMinite;
public DatePickerDialog_01Activity()
{
final Calendar cc = Calendar.getInstance();
mYear = cc.get(Calendar.YEAR);
mMonth = cc.get(Calendar.MONTH);
mDay = cc.get(Calendar.DAY_OF_MONTH);
mHour = cc.get(Calendar.HOUR_OF_DAY);
mMinite = cc.get(Calendar.MINUTE);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_date_picker_dialog_01);
btnSelectDate = (Button) findViewById(R.id.button01);
btnSelectTime = (Button) findViewById(R.id.button02);
btnSelectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
btnSelectTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
}
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int yearSelected, int monthOfYear, int dayOfMonth) {
year = yearSelected;
month = monthOfYear;
day = dayOfMonth;
Toast.makeText(getApplicationContext(),"날짜 : "+ year + " - " + month + " - "+ day,
Toast.LENGTH_SHORT).show();
}
};
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int min) {
hour = hourOfDay;
minute = min;
Toast.makeText(getApplicationContext(),"시간 : "+hour + " : " + minute,Toast.LENGTH_SHORT).show();
}
};
@Override
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case DATE_DIALOG_ID:
return new DatePickerDialog(this,mDateSetListener,mYear,mMonth,mDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this,mTimeSetListener,mHour,mMinite,false);
}
return null;
}
}
<java>
9. ProgressDialog
<?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.progressdialog_01.ProgressDialog_01Activity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnDialog"
android:text="wheel Type Dialog"
android:onClick="onWheel"
/>
</LinearLayout>
<xml>
package org.android.soldesk.progressdialog_01;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class ProgressDialog_01Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_progress_dialog_01);
}
public void onWheel(View v)
{
MyDialogFragment frag=MyDialogFragment.newInstance();
frag.show(getFragmentManager(),"Tag");
}
public static class MyDialogFragment extends DialogFragment{
public static MyDialogFragment newInstance(){
return new MyDialogFragment();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
ProgressDialog dialog=new ProgressDialog(getContext());
dialog.setTitle("Progress Title");
dialog.setMessage("메시지~~");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
return dialog;
}
}
}
<java>
10. SeekBar
<?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.seekbar_01.SeekBar_01Activity">
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar01"
android:max="100"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtValue"
android:text="설정값"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
</LinearLayout>
<xml>
package org.android.soldesk.seekbar_01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.SeekBar;
import android.widget.TextView;
public class SeekBar_01Activity extends AppCompatActivity {
SeekBar seek;
TextView txtvalue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_seek_bar_01);
seek = (SeekBar) findViewById(R.id.seekBar01);
txtvalue = (TextView) findViewById(R.id.txtValue);
seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Log.i("MyTag","onProgressChange" + Integer.toString(progress));
txtvalue.setText(Integer.toString(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.i("MyTag","~~~~~~~onStartTrackingTouch");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.i("MyTag","^^^^^^^onStopTrackingTouch");
}
});
}
}
<java>