Membuat Custom Toast Menggunakan Layout

package com.example.customtoast;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private Button btnToastCustom;
	private Button btnToastDefault;
	private Context context;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		context = this;
		
		btnToastCustom = (Button) findViewById(R.id.btn_toast_custom);
		btnToastDefault = (Button) findViewById(R.id.btn_toast_default);
		btnToastCustom.setOnClickListener(customListener);
		btnToastDefault.setOnClickListener(defaultListener);
	}
	
	private OnClickListener customListener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			LayoutInflater inflater = getLayoutInflater();
			View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast));

			TextView text = (TextView) layout.findViewById(R.id.txt_dialog);
			text.setText("Custom Toast :D");

			Toast toast = new Toast(getApplicationContext());
			toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
			toast.setDuration(Toast.LENGTH_LONG);
			toast.setView(layout);
			toast.show();
		}
	};

	private OnClickListener defaultListener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			Toast.makeText(context, "Default Toast :D", Toast.LENGTH_LONG).show();
		}
	};
}

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:background="#000000" >

    <Button
        android:id="@+id/btn_toast_custom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Custom Toast" 
        android:layout_centerInParent="true"/>
    
    <Button
        android:id="@+id/btn_toast_default"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Default Toast" 
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/btn_toast_custom"/>
    
    

</RelativeLayout>
<?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:background="@drawable/bg_custom_dialog"
    android:orientation="vertical" 
    android:id="@+id/custom_toast"
    android:padding="10dp">

    <TextView
        android:id="@+id/txt_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="test"
        android:textSize="18sp" />

</LinearLayout>

sumber : http://developer.android.com/

Share text menggunakan Action Send Filter Android

package com.bagkod.actionsendfilter;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Main extends Activity {

private Button btnShare;
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = this;
declareView();
}

private void declareView() {
btnShare = (Button) findViewById(R.id.btnShare);
btnShare.setOnClickListener(shareListener);
}

private OnClickListener shareListener = new OnClickListener() {

@Override
public void onClick(View arg0) {
shareApp();
}
};

private void shareApp() {
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra(Intent.EXTRA_SUBJECT, "Share App");
intent.putExtra(Intent.EXTRA_TEXT, "Mari berbagi coding");
context.startActivity(Intent.createChooser(intent, "Share Via"));
}
}

Membuat Efek Drop Shadow pada ActionBar dengan Layer-List (Android)

bg_header.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Drop Shadow -->
    <item>
        <shape>
            <padding android:bottom="4dp" />

            <solid android:color="#00000000" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:bottom="3dp" />

            <solid android:color="#10000000" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:bottom="2dp" />

            <solid android:color="#20000000" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:endColor="#6FEEE4"
                android:startColor="#E2EEF4" />
        </shape>
    </item>
</layer-list>

simpan file bg_header.xml di folder drawable, kemudian buat file actionbar.xml

actionbar.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="65dp"
    android:background="@drawable/bg_header"
    android:orientation="horizontal" >

</LinearLayout>

Mengambil nilai Latitude dan Longitude (Android)

Dicontoh project ini saya akan mencoba mengambil Latitude dan Longitude dari lokasi terkini user kemudian menggunakanya untuk menujukan arah ke tempat tujuan (get direction) dengan google maps.

public class LocationExample extends Activity {

private LocationAsyncTask locationTask;
private LocationManager locationManager;
private Location gpsLocation;
private Location curGpsLocation;
public String lon;
public String lat;
private ProgressDialog progressDialog;

public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	this.requestWindowFeature(Window.FEATURE_NO_TITLE);
	setContentView(R.layout.about);	
	context = this;
        getLocation()
	}

LocationListener locationListenerGPS = new LocationListener() {

		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {

		}

		@Override
		public void onProviderEnabled(String provider) {

		}

		@Override
		public void onProviderDisabled(String provider) {

		}

		@Override
		public void onLocationChanged(Location location) {
			gpsLocation = location;

		}
	};

	public void getLocation() {
		locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
		locationManager.requestLocationUpdates(
				LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerGPS);
		locationTask = null;
		locationTask = new LocationAsyncTask();
		locationTask.execute();
		System.out.println("latitude3 : " + lat);
	}

	private void getBetterLocation(Location location) {
		lon = Double.toString(location.getLongitude());
		lat = Double.toString(location.getLatitude());

		System.out.println("latitude : " + lat);
		System.out.println("longitude : " + lon);

		Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
				Uri.parse("http://maps.google.com/maps?saddr=" + lat + ","
						+ lon + "&daddr=" + -6.89441 + "," + 107.63105));

		startActivity(intent);
	}

	// ASYNTASK LOCATION

	private class LocationAsyncTask extends AsyncTask<Context, Void, Void> {

		public LocationAsyncTask() {
			progressDialog = new ProgressDialog(context);
			progressDialog.setCancelable(false);
			progressDialog.setMessage("Getting Location..");

		}

		@Override
		protected void onPreExecute() {

			progressDialog.show();
		}

		@Override
		protected Void doInBackground(Context... params) {

			curGpsLocation = locationManager
					.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
			Long t = Calendar.getInstance().getTimeInMillis();
			while ((gpsLocation == null || curGpsLocation == null)
					&& Calendar.getInstance().getTimeInMillis() - t < 6000) {

				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}

			}

			return null;
		}

		@Override
		protected void onPostExecute(Void result) {
			locationManager.removeUpdates(locationListenerGPS);
			progressDialog.dismiss();

			// GET BEST LOCATION
			if (gpsLocation != null && curGpsLocation != null) {
				boolean fix = LocationTester.isBetterLocation(curGpsLocation,
						gpsLocation);
				if (fix) {
					getBetterLocation(curGpsLocation);
				} else {
					getBetterLocation(gpsLocation);
				}
			} else {

				if (curGpsLocation != null) {
					getBetterLocation(curGpsLocation);
				} else if (gpsLocation != null) {
					getBetterLocation(gpsLocation);
				} else {
					String message = "Couldn't detect your location";
					Toast.makeText(getParent(), message, Toast.LENGTH_LONG)
							.show();
				}
			}

		}
	}


}  

Membuat Web Service JSON Sederhana Menggunakan PHP

Saya asumsikan database telah dibuat dengan nama coba_db dengan nama table datadiri dan field id,nama,alamat. Langkah pertama adalah membuat file koneksi ke database
koneksi.php

<?php
if($_SERVER["HTTP_HOST"] == "localhost") {
	define("DB_HOST","localhost");
	define("DB_USER","root");
	define("DB_PASS","");
	define("DB_NAME","coba_db");
} else {
        //dipanggil ketika host bukan localhost
	define("DB_HOST","localhost");
	define("DB_USER","root");
	define("DB_PASS","");
	define("DB_NAME","coba_db");
}
$link = mysql_connect(DB_HOST,DB_USER,DB_PASS);
if(!$link) { echo "MySQL Error : ".mysql_error(); }
mysql_select_db(DB_NAME,$link);
?>

Langkah kedua buat file service.php

<?php
  include 'koneksi.php';
  $sql="SELECT * FROM datadiri";
  $res=mysql_query($sql);
  $rows=mysql_num_rows($res);
  if($rows>0){
  	while ($data=mysql_fetch_array($res)) {
  		$id = $data['id'];
  		$nama=$data['nama'];
  		$alamat=$data['alamat']; 		
  		$datadiri[] = array('id => $id,'nama'=> $nama,'alamat'=> $alamat);  
  	}
  	$json['result'] = $datadiri;
  	echo json_encode($json);

?>

Mengatur Thumbnail Preview dengan Action Camera Android

package edu.example.photodemo;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class Main extends Activity {

	// ## VIEW
	private Button btnPhoto;
	private ImageView imgPhotoView;
	
	// ## VAR
	private Context context;
	
	// ## CAMERA VAR
	private Uri fileUri;
	private String imgView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		context = this;
		
		declareView();
		
	}

	private void declareView(){
		btnPhoto = (Button)findViewById(R.id.btnPhoto);
		imgPhotoView = (ImageView)findViewById(R.id.imageView1);
		
		btnPhoto.setOnClickListener(takeListener);
		imgPhotoView.setOnClickListener(takeListener);
	}
	
	private OnClickListener takeListener = new OnClickListener() {
		
		// ACTION CAMERA TAKE IMAGE
		@Override
		public void onClick(View v) {
			String imageFileName = "PHOTO" + "_";
			
			ContentValues values = new ContentValues();
			values.put(MediaStore.Images.Media.TITLE, imageFileName);
			fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

			Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
			intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

			startActivityForResult(intent, 100);
		}
	};
	
	// GET THUMBNAIL IMAGE
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 100) {
			if (resultCode == RESULT_OK) {

				final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
				final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";

				Cursor cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
				int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
				cursor.moveToFirst();

				imgView = cursor.getString(column_index_data);
				if (imgView != null) {
					Bitmap bitmap = BitmapFactory.decodeFile(imgView);
					imgPhotoView.setImageBitmap(bitmap);
				} else {
					String text = "Terjadi kesalahan pada aplikasi kamera. Silakan ulang foto kembali";
					Toast.makeText(context, text, Toast.LENGTH_LONG).show();
				}
			}
		}
	};
	
}
<RelativeLayout 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=".MainPhoto" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:background="#b5b5b5"
        android:src="@drawable/photo" />
    
    <Button 
        android:id="@+id/btnPhoto"
        android:layout_below="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Take Photo"/>

</RelativeLayout>

beri akses permission camera di android manifest.

<uses-permission android:name="android.permission.CAMERA" />

Mengatur Custom item dengan Base Adapter pada Listview Android

Main.java

package com.bagkod.customlistviewdemo;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

public class Main extends Activity {

	// ## VIEW
	private ListView mList;
	
	// ## DATA
	private Context context;
	private ArrayList<ModelDevice> arrayDevice;
	
	// ## ADAPTER
	private AdapterDevice adapterDevice;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		declareView();
		initData();
	}
	
	private void declareView() {
		context = getApplicationContext();
		mList = (ListView) findViewById(R.id.list_device);
	}
	
	private void initData() {
		arrayDevice = Dummy.getDevice();
		adapterDevice = new AdapterDevice(context, arrayDevice);
		
		mList.setAdapter(adapterDevice);
		mList.setOnItemClickListener(itemListener);
	}
	
	private OnItemClickListener itemListener = new OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			// implement action item sesuai kebutuhan
		}
		
	};
}

ModelDevice.java

package com.bagkod.customlistviewdemo;

public class ModelDevice {

	private String vendorName;
	private String deviceName;
	private String osName;

	public String getVendorName() {
		return vendorName;
	}

	public void setVendorName(String vendorName) {
		this.vendorName = vendorName;
	}

	public String getDeviceName() {
		return deviceName;
	}

	public void setDeviceName(String deviceName) {
		this.deviceName = deviceName;
	}

	public String getOsName() {
		return osName;
	}

	public void setOsName(String osName) {
		this.osName = osName;
	}

}

AdapterDevice.java

package com.bagkod.customlistviewdemo;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class AdapterDevice extends BaseAdapter {
	
	private ArrayList<ModelDevice> arrayData;
	private Context context;
	
	public AdapterDevice(Context context, ArrayList<ModelDevice> arrayData) {
		this.context = context;
		this.arrayData = arrayData;
	}
	
	static class DataViewHolder {
		TextView txtVendor;
		TextView txtDevice;
		TextView txtOs;
	}
	
	@Override
	public int getCount() {
		return arrayData.size();
	}

	@Override
	public Object getItem(int position) {
		return arrayData.get(position);
	}

	@Override
	public long getItemId(int position) {
		return 0;
	}

	@Override
	public View getView(int position, View view, ViewGroup viewGroup) {
		DataViewHolder viewHolder;
				
				if (view == null) {
					
					LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
					view = inflater.inflate(R.layout.list_item, viewGroup, false);
					
					viewHolder = new DataViewHolder();
					viewHolder.txtVendor = (TextView) view.findViewById(R.id.txt_vendor_name);
					viewHolder.txtDevice = (TextView) view.findViewById(R.id.txt_device_name);
					viewHolder.txtOs = (TextView) view.findViewById(R.id.txt_os_name);
		
					view.setTag(viewHolder);
					
				} else {
					viewHolder = (DataViewHolder) view.getTag();
				}
				
				ModelDevice data = arrayData.get(position);
				if (data != null) {
					
					viewHolder.txtVendor.setText(data.getVendorName());
					viewHolder.txtDevice.setText(data.getDeviceName());
					viewHolder.txtOs.setText(data.getOsName());
					
					
				}
				
				return view;
	}
}

Dummy.java

package com.bagkod.customlistviewdemo;

import java.util.ArrayList;

public class Dummy {

	public static ArrayList<ModelDevice> getDevice() {
		
		ModelDevice item = null;
		
		ArrayList<ModelDevice> listDevice = new ArrayList<ModelDevice>();
		
		item = new ModelDevice();
		item.setVendorName("Samsung");
		item.setDeviceName("Galaxy Note II");
		item.setOsName("Android");
		listDevice.add(item);
		
		item = new ModelDevice();
		item.setVendorName("HTC");
		item.setDeviceName("Butterfly");
		item.setOsName("Android");
		listDevice.add(item);
		
		item = new ModelDevice();
		item.setVendorName("Nokia");
		item.setDeviceName("Lumia 920");
		item.setOsName("Windows Phone");
		listDevice.add(item);
		
		item = new ModelDevice();
		item.setVendorName("Nokia");
		item.setDeviceName("Lumia 520");
		item.setOsName("Windows Phone");
		listDevice.add(item);
		
		item = new ModelDevice();
		item.setVendorName("Apple");
		item.setDeviceName("iPhone 4S");
		item.setOsName("IOS");
		listDevice.add(item);
		
		item = new ModelDevice();
		item.setVendorName("Apple");
		item.setDeviceName("iPad Mini");
		item.setOsName("IOS");
		listDevice.add(item);
		
		return listDevice;
	}
}

main.xml

<RelativeLayout 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=".Main" >

    <ListView
        android:id="@+id/list_device"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:background="#F6F6F6" >

    <TextView
        android:id="@+id/txt_vendor_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:text="Apple"
        android:textStyle="bold"
        android:textSize="18sp"
        android:textColor="#2A3335" />

    <TextView
        android:id="@+id/txt_device_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txt_vendor_name"
        android:layout_alignLeft="@+id/txt_vendor_name"
        android:text="IPhone"
        android:textSize="14sp"
        android:textColor="#2A3335" />

    <TextView
        android:id="@+id/txt_os_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txt_device_name"
        android:layout_alignLeft="@+id/txt_device_name"
        android:text="IOS"
        android:textColor="#2A3335" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="15dp"
        android:src="@drawable/ic_arrow" />

</RelativeLayout>

Mengambil Nilai IMEI pada device Android

package com.bagkod.imeidemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Main extends Activity {

	TextView txtImei;
	Button btnImei;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		declareView();
	}
	
	private void declareView() {
		txtImei = (TextView) findViewById(R.id.main_txt_imei);
		btnImei = (Button) findViewById(R.id.button1);
		btnImei.setOnClickListener(imeiListener);
	}
	
	private OnClickListener imeiListener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
			String imei = telephonyManager.getDeviceId();
			txtImei.setText(imei);
		}
	};

}

Beri akses permission pada Android Manifest.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bagkod.imeidemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="10" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.bagkod.imeidemo.Main"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

</manifest>

Menyembunyikan Android Title Bar dan Notification Bar

public class Main extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
                //Menyembunyikan Title Bar
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
                //Menyembunyikan Notification Bar
		this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);		
	}
}