android basic 3 dialogs

35
Basic Programming Dialogs by Eakapong Kattiya Monday, July 15, 13

Upload: eakapong-kattiya

Post on 11-May-2015

1.159 views

Category:

Technology


2 download

DESCRIPTION

Android basic 3 Dialogs

TRANSCRIPT

Page 1: Android basic 3 Dialogs

Basic Programming

Dialogs

by Eakapong KattiyaMonday, July 15, 13

Page 2: Android basic 3 Dialogs

by Eakapong Kattiya

Toasts

- Small popup- Automatically disappear- Timeout : TOAST_LONG / TOAST_SHORT

Toast.makeText(getApplicationContext(), "Message saved as draft, Toast.LENGTH_LONG).show();

Monday, July 15, 13

Page 3: Android basic 3 Dialogs

by Eakapong Kattiya

Alerts

Alerts without title bar

Alerts with title bar

Monday, July 15, 13

Page 4: Android basic 3 Dialogs

by Eakapong Kattiya

Basic Buttons

Buttons

Borderless Buttons

Buttons

Monday, July 15, 13

Page 5: Android basic 3 Dialogs

public void showAlert(){ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo);

AlertDialog.Builder builder = new AlertDialog.Builder(wrapper);

builder.setMessage("Unfortunately,the process com.android.phone has stopped"); builder.setPositiveButton("OK",null); builder.setNegativeButton("Report", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //show Report Activity } }); builder.create().show();}

by Eakapong Kattiya

AlertDialog : Alerts without title bar

Monday, July 15, 13

Page 6: Android basic 3 Dialogs

public void showAlertWithTitleBar(){ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo);

AlertDialog.Builder builder = new AlertDialog.Builder(wrapper);builder.setIcon(android.R.drawable.ic_dialog_alert);builder.setTitle("Erase USB Storage ?");

builder.setMessage("You’ll lose all photos and media!"); builder.setPositiveButton("Erase", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //do Report Activity } });

builder.setNegativeButton("Cancel", null); builder.create().show();}

by Eakapong Kattiya

AlertDialog : Alerts with title bar

Monday, July 15, 13

Page 7: Android basic 3 Dialogs

by Eakapong Kattiya

Dialogs

1. Optional Title

2. Content area

3. Action button

Monday, July 15, 13

Page 8: Android basic 3 Dialogs

by Eakapong Kattiya

Text Fields : EditText

Single line &Multi line

Text field types

Text selection

Monday, July 15, 13

Page 9: Android basic 3 Dialogs

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_layer);

builder.setTitle("Prompt user input");

builder.setMessage("Please type a message.");

// Set an EditText view to get user input final EditText input = new EditText(this);builder.setView(input);

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override public void onClick(DialogInterface dialog, int which) { Log.i("AlertDialog","input text =" + input.getText().toString());

}

});

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {

}

}); builder.create().show();}

by Eakapong Kattiya

AlertDialog : Prompt user input

Monday, July 15, 13

Page 10: Android basic 3 Dialogs

by Eakapong Kattiya

Switches

Radio Buttons

On/Off Switches

Checkboxes

Monday, July 15, 13

Page 11: Android basic 3 Dialogs

String[] items = {"Notification", "Music", "Location"};boolean[] itemsChecked = new boolean[items.length];

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_layer);

builder.setTitle("Multi Choice Items");

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, int which) {

} }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override public void onClick(DialogInterface dialog, int which) { }

}); builder.setSingleChoiceItems(items,-1,

new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int item) { } });

builder.create().show();}

by Eakapong Kattiya

AlertDialog : Single choice dialog

Monday, July 15, 13

Page 12: Android basic 3 Dialogs

String[] items = {"Notification", "Music", "Location"};boolean[] itemsChecked = new boolean[items.length];

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_layer);

builder.setTitle("Multi Choices Dialog");

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, int which) {

} }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override public void onClick(DialogInterface dialog, int which) { }

}); builder.setMultiChoiceItems(items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() {

@Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { } });

builder.create().show();}

by Eakapong Kattiya

AlertDialog : Multi choices dialog

Monday, July 15, 13

Page 13: Android basic 3 Dialogs

by Eakapong Kattiya

Index Scrolling

Scroll Indicator

Scrolls

Monday, July 15, 13

Page 14: Android basic 3 Dialogs

by Eakapong Kattiya

Pickers

Space considerations

Date & Time pickers

Monday, July 15, 13

Page 15: Android basic 3 Dialogs

by Eakapong Kattiya

SharedPreferences : Sample

//Create Preferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

//Create Preference Editor SharedPreferences.Editor prefEditor = prefs.edit();

prefEditor.putBoolean(“key1”, true); prefEditor.putString(“key2”, “value1”); prefEditor.putString(“key3”, “value2”); //Save Preferences with Editor prefEditor.commit();

//Load Preferences prefs.getBoolean(“key1”,false); prefs.getString(“key2”);

Monday, July 15, 13

Page 16: Android basic 3 Dialogs

by Eakapong Kattiya

SharedPreferences : SecondActivity.java

String[] items = {"Notification", "Music", "Location"};boolean[] itemsChecked = new boolean[items.length];

public void loadFromPreference(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

for (int i = 0; i < items.length; i++) { boolean isChecked = prefs.getBoolean(items[i],false); itemsChecked[i] = isChecked ; }}

Monday, July 15, 13

Page 17: Android basic 3 Dialogs

@Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Item item = (Item) arg0.getItemAtPosition(arg2); Log.i("Click listView", item.title);

if(arg2 == 0){ showPopupMenu(); }else if(arg2 == 1){ showPopupMenuWithIcon(); }else if(arg2 == 2){ showAlert(); }else if(arg2 == 3){ showAlertWithTitleBar(); }else if(arg2 == 4){ showPromptUserInputDialog(); }else if(arg2 == 5){ showSingleChoiceDialog(); }else if(arg2 == 6){ showMultiChoiceDialog(); }else if(arg2 == 7){ showMultiChoiceDialogWithPref(); } }

by Eakapong Kattiya

AlertDialog with Preferences : SecondActivity.java

Monday, July 15, 13

Page 18: Android basic 3 Dialogs

public void showMultiChoiceDialogWithPref() {loadFromPreference();

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_layer); builder.setTitle("Setting"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, int which) {

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor prefEditor = prefs.edit();

for (int i = 0; i < items.length; i++) { String message = items[i] + " checked!"; Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG).show(); prefEditor.putBoolean(items[i], itemsChecked[i]); } prefEditor.commit();

} }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override public void onClick(DialogInterface dialog, int which) {

} }); builder.setMultiChoiceItems(items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() {

@Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { itemsChecked[which] = isChecked ; } });

builder.create().show();}

by Eakapong Kattiya

AlertDialog with Preferences : SecondActivity.java

Monday, July 15, 13

Page 19: Android basic 3 Dialogs

by Eakapong Kattiya

Popups (>API 11)

Monday, July 15, 13

Page 20: Android basic 3 Dialogs

by Eakapong Kattiya

Spinners

Spinners in forms

Spinners in action bars(>API 11)

Monday, July 15, 13

Page 21: Android basic 3 Dialogs

public void showPopupMenuWithIcon(){ final String [] items = new String[] {"From Gallery", "From Camera"}; final Integer[] icons = new Integer[] {android.R.drawable.ic_menu_gallery,

android.R.drawable.ic_menu_camera};

ListAdapter adapter = new ArrayAdapterWithIcon(this, items, icons);

ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo_Light_Dialog);

AlertDialog.Builder builder = new AlertDialog.Builder(wrapper); builder.setIcon(android.R.drawable.ic_menu_share); builder.setTitle("Share Photo"); builder.setAdapter(adapter, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) { //... } });

builder.create().show();

}

by Eakapong Kattiya

AlertDialog : Popup Menu With Icon

Monday, July 15, 13

Page 22: Android basic 3 Dialogs

public class ArrayAdapterWithIcon extends ArrayAdapter<String> {

private List<Integer> images;

public ArrayAdapterWithIcon(Context context, List<String> items, List<Integer> images) { super(context, android.R.layout.select_dialog_item, items); this.images = images; }

public ArrayAdapterWithIcon(Context context, String[] items, Integer[] images) { super(context, android.R.layout.select_dialog_item, items); this.images = Arrays.asList(images); }

@Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView textView = (TextView) view.findViewById(android.R.id.text1); textView.setCompoundDrawablesWithIntrinsicBounds(images.get(position), 0, 0, 0); textView.setCompoundDrawablePadding( (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, getContext().getResources().getDisplayMetrics())); return view; }

}

by Eakapong Kattiya

ArrayAdapterWithIcon.java

Monday, July 15, 13

Page 23: Android basic 3 Dialogs

by Eakapong Kattiya

Gestures

Touch Long press Swipe

Drag Double touch Pinch open Pinch close

Monday, July 15, 13

Page 24: Android basic 3 Dialogs

class MyGestureListener extends GestureDetector.SimpleOnGestureListener{ @Override public boolean onSingleTapUp(MotionEvent ev) { Log.d("onSingleTapUp",ev.toString()); return true; } public boolean onDoubleTap(MotionEvent ev) { Log.d("onDoubleTap",ev.toString()); return true; } @Override public void onShowPress(MotionEvent ev) { Log.d("onShowPress",ev.toString()); } @Override public void onLongPress(MotionEvent ev) { Log.d("onLongPress",ev.toString()); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("onScroll",e1.toString()); return true; } @Override public boolean onDown(MotionEvent ev) { Log.d("onDownd",ev.toString()); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.d("d",e1.toString()); Log.d("e2",e2.toString()); return true; }}

by Eakapong Kattiya

Gestures : create MyGestureListener.java

Monday, July 15, 13

Page 25: Android basic 3 Dialogs

public class MainActivity extends TabActivity {

GestureDetector mGestureDetector ;

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

//.. mGestureDetector = new GestureDetector(this, new MyGestureListener()); }

@Override public boolean onTouchEvent(MotionEvent event) { if (mGestureDetector.onTouchEvent(event)) return true; else return false; }

by Eakapong Kattiya

Gestures : MainActivity.java

Monday, July 15, 13

Page 26: Android basic 3 Dialogs

public class MyShakeListener implements SensorEventListener { private String TAG = MyShakeListener.class.getSimpleName(); private static final int FORCE_THRESHOLD = 800; private static final int TIME_THRESHOLD = 100; private static final int SHAKE_TIMEOUT = 500; private static final int SHAKE_DURATION = 1000; private static final int SHAKE_COUNT = 5;

private SensorManager mSensorMgr; private float mLastX = -1.0f, mLastY = -1.0f, mLastZ = -1.0f; private long mLastTime; private OnShakeListener mShakeListener; private Context mContext; private int mShakeCount = 0; private long mLastShake; private long mLastForce;

public interface OnShakeListener { public void onShake(); }

public MyShakeListener(Context context) {

Log.d(TAG,"ShakeListener invoked---->"); mContext = context; resume(); }

public void setOnShakeListener(OnShakeListener listener) { Log.d(TAG,"ShakeListener setOnShakeListener invoked---->"); mShakeListener = listener; }

by Eakapong Kattiya

Shake : MyShakeListener.java (1)

Monday, July 15, 13

Page 27: Android basic 3 Dialogs

public void resume() { mSensorMgr = (SensorManager) mContext .getSystemService(Context.SENSOR_SERVICE); if (mSensorMgr == null) { throw new UnsupportedOperationException("Sensors not supported"); } boolean supported = false; try { supported = mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); } catch (Exception e) { Toast.makeText(mContext, "Shaking not supported", Toast.LENGTH_LONG) .show(); }

if ((!supported) && (mSensorMgr != null)) mSensorMgr.unregisterListener(this); }

public void pause() { if (mSensorMgr != null) {

mSensorMgr.unregisterListener(this); mSensorMgr = null; } }

by Eakapong Kattiya

Shake : MyShakeListener.java (2)

Monday, July 15, 13

Page 28: Android basic 3 Dialogs

@Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) return; long now = System.currentTimeMillis();

if ((now - mLastForce) > SHAKE_TIMEOUT) { mShakeCount = 0; }

if ((now - mLastTime) > TIME_THRESHOLD) { long diff = now - mLastTime; float speed = Math.abs(event.values[SensorManager.DATA_X] + event.values[SensorManager.DATA_Y] + event.values[SensorManager.DATA_Z] - mLastX - mLastY - mLastZ) / diff * 10000; if (speed > FORCE_THRESHOLD) { if ((++mShakeCount >= SHAKE_COUNT) && (now - mLastShake > SHAKE_DURATION)) { mLastShake = now; mShakeCount = 0; Log.d(TAG,"ShakeListener mShakeListener---->"+mShakeListener); if (mShakeListener != null) { mShakeListener.onShake(); } } mLastForce = now; } mLastTime = now; mLastX = event.values[SensorManager.DATA_X]; mLastY = event.values[SensorManager.DATA_Y]; mLastZ = event.values[SensorManager.DATA_Z]; } }

by Eakapong Kattiya

Shake : MyShakeListener.java (3)

Monday, July 15, 13

Page 29: Android basic 3 Dialogs

public void addShakeListener(){

MyShakeListener mShaker = new MyShakeListener(this); mShaker.setOnShakeListener(new MyShakeListener.OnShakeListener () { public void onShake() { Toast.makeText(getApplicationContext(), "You have shaken your phone", Toast.LENGTH_SHORT).show();

MediaPlayer mediaPlayer ; mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.background); mediaPlayer.start(); } }); }

by Eakapong Kattiya

Gestures : MainActivity.java

Monday, July 15, 13

Page 30: Android basic 3 Dialogs

Multimedia

by Eakapong KattiyaMonday, July 15, 13

Page 31: Android basic 3 Dialogs

by Eakapong Kattiya

Camera & Gallery

//Take a photo with cameraIntent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(Intent.createChooser(intentCamera, "Take a with:"),MY_CAMERA_REQUEST);

//Choose photo from galleryIntent intentGallery = new Intent(android.content.Intent.ACTION_GET_CONTENT);intent.setType("image/*");startActivityForResult(intentGallery,MY_CAMERA_REQUEST);

//Get Taken Photo from camera & galleryprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == MY_CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); ImageView imageView = (ImageView)findViewById(R.id.imageView1); imageView.setImageBitmap(photo); } }

Monday, July 15, 13

Page 32: Android basic 3 Dialogs

by Eakapong Kattiya

MediaPlayer : Play Raw Music File (background.mp3)

//Start Music MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.background);mediaPlayer.start();

//Set VolumeAudioManager mAudioManager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);int current_volume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);mediaPlayer.setVolume(current_volume, current_volume);

//Set Completion ListenermediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Overridepublic void onCompletion(MediaPlayer mp) {

}

});

Monday, July 15, 13

Page 33: Android basic 3 Dialogs

by Eakapong Kattiya

VideoView : Offline & Streaming : activity_about.xml

<VideoView android:id="@+id/videoView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" />

Monday, July 15, 13

Page 34: Android basic 3 Dialogs

by Eakapong Kattiya

VideoView : Offline & Streaming : VideoViewActivity.java

String streamingURL = "http://58.64.30.205/PaidContent/ZGEwZDZiZWRmZDdjZTM2M2M0ZTA3ZjU1OWI4ZWY4M2YKLIVE2.m3u8" ;

String streamingTest = "http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8";

String offlineURL = "android.resource://" + getPackageName() + "/" + R.raw.swipe_tabs ;

VideoView videoView = (VideoView)findViewById(R.id.videoView1); videoView.setVideoURI(Uri.parse(streamingURL)); videoView.setMediaController(new MediaController(this)); videoView.requestFocus(); videoView.setKeepScreenOn(true); videoView.start();

VideoPlayer is a wrapper for MediaPlayer

VideoPlayer is easier than MediaPlayer

Monday, July 15, 13

Page 35: Android basic 3 Dialogs

by Eakapong Kattiya

Seek Bars

Monday, July 15, 13