MY mENU


Sunday, 9 September 2012

Clip Board Example in Android


This example shows how to use clipboard manager to copy text/intent/url in android.
Algorithm:
1.) Create a new project by File-> New -> Android Project name it ClipBoardExample.
2.) Write following into main.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">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button android:id="@+id/copy_styled_text"
            android:layout_width="wrap_content"android:layout_height="wrap_content"
            android:onClick="pasteStyledText"
            android:text="@string/copy_text" />
        <TextView
            android:id="@+id/styled_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:textStyle="normal" />
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button android:id="@+id/copy_plain_text"
            android:layout_width="wrap_content"android:layout_height="wrap_content"
            android:onClick="pastePlainText"
            android:text="@string/copy_text" />
        <TextView
            android:id="@+id/plain_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:textStyle="normal" />
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button android:id="@+id/copy_intent"
            android:layout_width="wrap_content"android:layout_height="wrap_content"
            android:onClick="pasteIntent"
            android:text="@string/copy_intent" />
        <Button android:id="@+id/copy_uri"
            android:layout_width="wrap_content"android:layout_height="wrap_content"
            android:onClick="pasteUri"
            android:text="@string/copy_uri" />
    </LinearLayout>
    <Spinner android:id="@+id/clip_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:prompt="@string/clip_type_prompt"
    />
    <TextView
        android:id="@+id/clip_mime_types"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:textStyle="normal"
        />
    <EditText
        android:id="@+id/clip_text"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:textStyle="normal"
        />
</LinearLayout>
3.) Create and write following into res/values/arrays.xml:
xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="clip_data_types">
        <item>No data in clipboard</item>
        <item>Text clip</item>
        <item>Intent clip</item>
        <item>Uri clip</item>
    </string-array>
</resources>
4.) Write following into res/values/strings.xml:
<resources>
    <string name="app_name">ClipBoardExample</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_clip_board_example">ClipBoardExample</string>
        <string name="copy_text">Copy Text</string>
    <string name="copy_intent">Copy Intent</string>
    <string name="copy_uri">Copy URI</string>
    <string name="clip_type_prompt">Clip Type</string>
    <string name="styled_text">Plain, <b>bold</b>, <i>italic</i>, <b><i>bold-italic</i></b></string>
</resources>
5.) Run for output.
Steps:
1.) Create a project named ClipBoardExample and set the information as stated in the image.
Build Target: Android 4.0
Application Name: ClipBoardExample
Package Name: com. example. ClipBoardExample
Activity Name: ClipBoardExample
Min SDK Version: 11
2.) Open ClipBoardExample.java file and write following code there:
package com.example.clipboardexample;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class ClipBoardExample extends Activity {
    ClipboardManager mClipboard;
    Spinner mSpinner;
    TextView mMimeTypes;
    EditText mEditText;
    CharSequence mStyledText;
    String mPlainText;
    ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener
            = new ClipboardManager.OnPrimaryClipChangedListener() {
        public void onPrimaryClipChanged() {
            updateClipData();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
        // See res/any/layout/resources.xml for this view layout definition.
        setContentView(R.layout.main);
        TextView tv;
        mStyledText = getText(R.string.styled_text);
        tv = (TextView)findViewById(R.id.styled_text);
        tv.setText(mStyledText);
        mPlainText = mStyledText.toString();
        tv = (TextView)findViewById(R.id.plain_text);
        tv.setText(mPlainText);
        mSpinner = (Spinner) findViewById(R.id.clip_type);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.clip_data_types, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mSpinner.setAdapter(adapter);
        mSpinner.setOnItemSelectedListener(
                new OnItemSelectedListener() {
                    public void onItemSelected(
                            AdapterView parent, View view, int position, longid) {
                    }
                    public void onNothingSelected(AdapterView parent) {
                    }
                });
        mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);
        mEditText = (EditText)findViewById(R.id.clip_text);
        mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
        updateClipData();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);
    }
    public void pasteStyledText(View button) {
        mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mStyledText));
    }
    public void pastePlainText(View button) {
        mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText));
    }
    public void pasteIntent(View button) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));
        mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent));
    }
    public void pasteUri(View button) {
        mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/")));
    }
    void updateClipData() {
        ClipData clip = mClipboard.getPrimaryClip();
        String[] mimeTypes = clip != null ?clip.getDescription().filterMimeTypes("*/*") : null;
        mMimeTypes.setText("");
        if (mimeTypes != null) {
            for (int i=0; i<mimeTypes.length; i++) {
                mMimeTypes.append(mimeTypes[i]);
                mMimeTypes.append("\n");
            }
        }
        if (clip == null) {
            mSpinner.setSelection(0);
            mEditText.setText("");
        } else if (clip.getItemAt(0).getText() != null) {
            mSpinner.setSelection(1);
            mEditText.setText(clip.getItemAt(0).getText());
        } else if (clip.getItemAt(0).getIntent() != null) {
            mSpinner.setSelection(2);
            mEditText.setText(clip.getItemAt(0).getIntent().toUri(0));
        } else if (clip.getItemAt(0).getUri() != null) {
            mSpinner.setSelection(3);
            mEditText.setText(clip.getItemAt(0).getUri().toString());
        } else {
            mSpinner.setSelection(0);
            mEditText.setText("Clip containing no data");
        }
    }
}
3.) Compile and build the project.
Output

Options Menu in Android Development


The project describes How to implement option menu into your application. Option menu is the primary collection of menu items for an activity, which appears when the user touches the MENU button.
Underlying Algorithm:
Basic description of algorithm in step by step form:
  1. Create a Project MyCheckBoxMenu
  2. Create and Open the res/menu/menu.xml file and insert the following:
  3.  xmlns:android="http://schemas.android.com/apk/res/android">
       android:id="@+id/settings_title"
             android:title="@string/settings_title" />
       android:id="@+id/back_title"
             android:title="@string/back_title" />
       android:id="@+id/exit_title"
             android:title="@string/exit_title" />
>
  • Define the required strings in strings.xml.
  • Make sure you write following method in MyCheckBoxMenu class:
  • public boolean onCreateOptionsMenu(Menu menu)
    {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
    }
    The inflater.inflate() method loads the menu file for the Activity, specified by the resource ID — R.menu.menu refers to the res/menu/menu.xml menu file.
  • Create and Open res/xml/settings.xml file and insert following code:
  •  xmlns:android="http://schemas.android.com/apk/res/android">
     android:key="music"
    android:title="@string/music_title" android:summary="@string/music_summary"
                    android:defaultValue="true" />
             android:key="hints"
    android:title="@string/hints_title" android:summary="@string/hints_summary"
                    android:defaultValue="true" />
    >
    This will create a menu which will have checkbox to select and deselect settings for application and will be saved accordingly in prefs.
  • Next add a new activity in manifest.xml for prefs class.
  •  android:name="org.example.MyCheckBoxMenu.Prefs" 
                    android:label="@string/settings_title">
            
    >
  • Run the application.
  • Steps to Create New Project:
    1. Open Eclipse. Use the New Project Wizard and select Android Project Give the respective project name i.e. MyCheckBoxMenu
    2. Then enter the following information:
    • Project name: MyCheckBoxMenu
    • Build Target: Android 1.6
    • Application name: MyCheckBoxMenu
    • Package name: org.example.MyCheckBoxMenu
    • Create Activity: MyCheckBoxMenu
    On Clicking Finish MyCheckBoxMenu code structure is generated with the necessary Android Packages being imported along with MyCheckBoxMenu.java. Following code must be added in MyCheckBoxMenu class to get the menu work.
    public booleanonOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.settings_title:
                    startActivity(new Intent(this, Prefs.class));
            return true;
    case R.id.exit_title:
                    finish();
                    return true;
        }
      return false;
    }
    Prefs.java
    package org.example.MyCheckBoxMenu;
    import org.example.MyCheckBoxMenu.R;
    import android.os.Bundle;
    import android.preference.PreferenceActivity;
    public class Prefs extends PreferenceActivity {
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    addPreferencesFromResource(R.xml.settings);
            }
    }
    Output –The final output:
    Click on “MENU”
    Click on “Options”
    Be Sociable, Share!