Friday 24 June 2011

How to get Resource Name In Android By Resource Id

Here i update my Custom GridView and i also add the ItemClickListen In It,And Here you can also find the how to get Resources Name By Passing It ID in android.

For that you have to First Refer My Last Post Of Custom GridView at here http://android-vogue.blogspot.com/2011/06/custom-gridview-in-android-with.html so now let see what i update in that is here below


First add the this line in OnCreate Method

mGridViewl.setOnItemClickListener(MyClickListener);

and after that add the


private OnItemClickListener MyClickListener=new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long lg) {

myarray.add(COUNTRIES[position]);
resourcename=getResourceNameByID(R.drawable.class,mThumbIds[position]);
Toast.makeText(Gridview.this, "Image Name is "+ resourcename, 34).show();
//Toast.makeText(Gridview.this, "Mood Has been selected ", Toast.LENGTH_SHORT).show();

//Log.v("log_tag", "the string is "  +  temp);

}
};

add above function in GridView Class

Now the most Important Part For Getting Resource Name Of Image By Passing ID of that Image we add following method in GridView Class


public String getResourceNameByID(Class<?> aClass,int ResourceID) throws IllegalArgumentException{

Field[]drawableFields =aClass.getFields();
for(Field f:drawableFields){
try{
if(ResourceID==f.getInt(null)){
return f.getName();
}
}
catch(Exception e){
e.printStackTrace();
}
}


throw new IllegalArgumentException();

}

Now you are ready to get Resource Name By Id of Resource.





Monday 13 June 2011

Custom GridView In Android With ImageView and TextView

Every one want to do some thing with android ListView and GridView and Much More.
Here is the Example of Custom GridView in Which we have used ImageView and TextView below it.
Now One more thing that is this custom gridview can also done by the using View ,But i done it as shown in my code using Class Like what you want to put in grid just put it in gridview xml file and also make class ViewHolder as done by me in this tutorials .

Here below is my class for the GridView

public class Gridview extends Activity {
    GridView mGridViewl;
    //Context mContext = Gridview.this;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mGridViewl = (GridView) findViewById(R.id.gridview);
        mGridViewl.setAdapter(new EfficientAdapter(this));

    }
   
    private static class EfficientAdapter extends BaseAdapter{
        private LayoutInflater mLayoutInflater;
        public EfficientAdapter(Context context){
            mLayoutInflater=LayoutInflater.from(context);
        }
       
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return mThumbIds.length;
        }

        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return arg0;
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return arg0;
        }

        @Override
        public View getView(int position, View converView, ViewGroup parent) {
            ViewHolder mVHolder;
            if(converView == null){
                converView=mLayoutInflater.inflate(R.layout.customgrid, parent, false);
                mVHolder=new ViewHolder();
                mVHolder.mImageView=(ImageView)converView.findViewById(R.id.imgview);
                mVHolder.mTextView=(TextView)converView.findViewById(R.id.text);
                mVHolder.mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                mVHolder.mImageView.setPadding(8,8,8,8);
                converView.setTag(mVHolder);
            }else{
                mVHolder=(ViewHolder)converView.getTag();
            }
            mVHolder.mImageView.setImageResource(mThumbIds[position]);
            mVHolder.mTextView.setText(COUNTRIES[position]);
           
            return converView;
        }
       
    }
   
    static class ViewHolder{
        ImageView mImageView;
        TextView mTextView;
    }

    static final String[] COUNTRIES = new String[] { "Afghanistan", "Albania",
            "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla",
            "Antarctica", "Antigua and Barbuda", "Argentina" };

   

    private static  Integer[] mThumbIds = { R.drawable.android,
            R.drawable.android1, R.drawable.android2,
            R.drawable.android3, R.drawable.android4,
            R.drawable.android5, R.drawable.android6, R.drawable.android7,
            R.drawable.android8, R.drawable.android9 };
}

and here is my main.xml  file for setcontentView(); in my activity

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <GridView    android:id="@+id/gridview"
                android:stretchMode="columnWidth"
                 android:cacheColorHint="#00000000"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:numColumns="3"
                android:clipChildren="true"
                android:horizontalSpacing="5dip"
                android:verticalSpacing="5dip">
    </GridView>
</LinearLayout>


here is the another file of customgrid.xml  for use in gridview

<?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="fill_parent"
  android:orientation="vertical"
  >
      <ImageView
      android:src="@drawable/android"
      android:scaleType="center"
      android:cropToPadding="true"
      android:adjustViewBounds="true"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imgview"
      android:layout_gravity="center"/>
     
      <TextView
      android:text="@string/hello"
     android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/text"
      android:layout_gravity="center_horizontal"
      />
 
</LinearLayout>

Here is the Out Put Image of my Device



Saturday 11 June 2011

How to get Latitude and Longitude of current location in android mobile?

Here is the First Activity class for getting Current Location Latitude and Longitude.
Here is the my java file class

public class LocationGet extends Activity implements LocationListener{
    private TextView latituteField;
    private TextView longitudeField;
    private LocationManager locationManager;
    private String provider;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        latituteField = (TextView) findViewById(R.id.latitude);
        longitudeField = (TextView) findViewById(R.id.longitude);
        // Get the location manager
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        // Define the criteria how to select the locatioin provider -> use
        // default
        Criteria criteria = new Criteria();
        provider = locationManager.getBestProvider(criteria, false);
        Location location = locationManager.getLastKnownLocation(provider);
        // Initialize the location fields
        if (location != null) {
            System.out.println("Provider " + provider + " has been selected.");
            int lat = (int) (location.getLatitude());
            int lng = (int) (location.getLongitude());
            latituteField.setText(String.valueOf(lat));
            longitudeField.setText(String.valueOf(lng));
        } else {
            latituteField.setText("Provider not available");
            longitudeField.setText("Provider not available");
        }

    }

    @Override
    public void onLocationChanged(Location location) {
        int lat = (int) (location.getLatitude());
        int lng = (int) (location.getLongitude());
        latituteField.setText(String.valueOf(lat));
        longitudeField.setText(String.valueOf(lng));
        }

    @Override
    public void onProviderDisabled(String provider) {
        Toast.makeText(this, "Disenabled provider " + provider,
                Toast.LENGTH_SHORT).show();

       
    }

    @Override
    public void onProviderEnabled(String provider) {
        Toast.makeText(this, "Enabled new provider " + provider,
                Toast.LENGTH_SHORT).show();

       
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
       
    }

    @Override
    protected void onResume() {
        locationManager.requestLocationUpdates(provider, 500, 1, this);
        super.onResume();
    }
   
    /* Remove the locationlistener updates when Activity is paused */
    @Override
    protected void onPause() {
        super.onPause();
        locationManager.removeUpdates(this);
    }

}


here is the xml file to display two textview for lat and lng

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/latitude"
    android:id="@+id/latitude"
    /><TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/longitude"
    android:id="@+id/longitude"
    />
</LinearLayout>

Friday 3 June 2011

How to read local xml file from my asset folder or in res/raw folder?

Here is my main file of java to read xml and parse it.

public class Readxml extends ListActivity {
    ArrayList<String> items=new ArrayList<String>();
    TextView selection;
    String myvalues;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        selection=(TextView)findViewById(R.id.selection);
        Button btn=(Button)findViewById(R.id.btnget);
       
       
       try
       {
           InputStream is=getResources().openRawResource(R.raw.my_xml_sample);
          //here is i specified my xml file name
           DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
           Document doc=builder.parse(is, null);
           NodeList words=doc.getElementsByTagName("Data");
           //NodeList words=doc.getElementsByTagNameNS(arg0, arg1);
          // NodeList mywords=doc.getElementsByTagNameNS("Data" , "Data" );
         
           for(int i=0;i<words.getLength();i++){
              items.add(((Element)words.item(i)).getTextContent());
            // myvalues=((Element)words.item(i)).getNodeValue();
              Log.v("log_tag", "my values is"+ myvalues);
           }
           is.close();
       }
       catch(Throwable t){
          
           Toast.makeText(this, "Exception :"+ t.toString(), 2000).show();
          
          
       }
      
       setListAdapter(new ArrayAdapter<String>(this,
               android.R.layout.simple_list_item_1,
               items));
       btn.setOnClickListener(new OnClickListener() {
       
        @Override
        public void onClick(View arg0) {
            String[] mylist =new String[items.size()];
            for(int i=0,j=0;i<items.size();i=i+18,j++){
                Log.v("log_tag", "the values of item is"+items.get(i));
                mylist[j]=items.get(i);
           
                Log.v("log_tag", "her is my column"+mylist[j]);
           
            }
           
        }
    });
      
       
    }
   
    public void onListItemClick(ListView parent, View v, int position,
            long id) {
            selection.setText(items.get(position).toString());
            }
}

Tuesday 17 May 2011

How to Blink Text View in Every 1 second in Android


package com.android.textviewblink;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class TextViewBlink extends Activity {
Handler handler;
TextView txtvw;
boolean blinkOn = true;
        @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtvw = (TextView) findViewById(R.id.txtview);
Thread myThread = null;
Runnable runnable = new CountDownRunner();
myThread = new Thread(runnable);
myThread.start();

}

public void update(){
runOnUiThread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
if (blinkOn) {
 txtvw.setVisibility(View.VISIBLE);
//txtvw.setText("Himanshu");
Log.v("log_tag", "true is gone");
} else {
txtvw.setVisibility(View.INVISIBLE);
//txtvw.setText("Mistri");
Log.v("log_tag", "false is gone");
}
blinkOn = !blinkOn;
}
});
}
class CountDownRunner implements Runnable {

// @Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
                                      Thread.sleep(1000); //here you can change the time of blink
update();
Log.v("log_tag", "here the thread come for every 1 second ");

} catch (InterruptedException e) {
// Thread.currentThread().interrupt();
Log.e("log_tag", "Error s " + e.toString());
} catch (Exception e) {
Log.e("log_tag", "Error is " + e.toString());
}
}
}
}
}

Monday 16 May 2011

Android Button Design and selector

For first The xml file for may main layout in android activity is following

main.xml
----------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Done" android:id="@+id/donebtn"
android:padding="5dip" android:background="@drawable/button_view" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="back" android:id="@+id/backbtn"
android:padding="5dip" android:background="@drawable/button_view" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:text="button_selector" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/selector" />
</LinearLayout>
</LinearLayout>
-------------------------------------------------------------------------------------------------------------

After declare main xml file we will make 


<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#453657" />
<stroke android:width="1dp" android:height="1dp"  android:color="#FFD40F"  />
<corners android:bottomLeftRadius="8dip"
android:topRightRadius="8dip" android:topLeftRadius="8dip"
android:bottomRightRadius="8dip" />
</shape>

this xml file in drawable folder of your project .
<solid/> this tag is for background color of shape
<stroke/> this tag is used for boarder of shape
<corners/> this tag is used for make the corner round at given value.

and now for changing on button clicked changes we define again new xml file like this below.

Selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/spinner_dropdown_background_down"
android:state_pressed="true" />
 
<item android:drawable="@drawable/spinner_dropdown_background_down" 
android:state_focused="true" />
<item android:drawable="@drawable/spinner_dropdown_background_up" />
</selector>




Wednesday 11 May 2011

Custom ListView In android

Here is the android tutorial for how to make android custom list view with TextView ,Image View ,Check Box

Below is the java file for it.

package android.tutorial.customlist;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class CustomListView extends Activity {
    ListView mListview;
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mListview=(ListView)findViewById(R.id.listview);
        mListview.setAdapter(new mCustomList(this));
      
    }
    public class mCustomList extends BaseAdapter{
     private Context mContext;

     public mCustomList(Context c){
     mContext = c;
     }
     @Override
public int getCount() {
// TODO Auto-generated method stub
return COUNTRIES.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int position, View converView, ViewGroup parent) {
View List;
if(converView==null){
List=new View(mContext);
LayoutInflater mLayoutinflater=getLayoutInflater();
List=mLayoutinflater.inflate(R.layout.mylist, parent, false);
}
else{
List = (View)converView;
}
ImageView imageView = (ImageView)List.findViewById(R.id.imgview);
TextView textView = (TextView)List.findViewById(R.id.text);
CheckBox chkbox=(CheckBox)List.findViewById(R.id.chkbox);
textView.setText(COUNTRIES[position]);

// TODO Auto-generated method stub
return List;
}
    
    }
  
    static final String[] COUNTRIES = new String[] {
        "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
        "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
        "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
        "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
        "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
        "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
        "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
        "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
        "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
        "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
        "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
        "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
        "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
        "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
        "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
        "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
        "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
        "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
        "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
        "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
        "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
        "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
        "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
        "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
        "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
        "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
        "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
        "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
        "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
        "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
        "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
        "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
        "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
        "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
        "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
        "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
        "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
        "Ukraine", "United Arab Emirates", "United Kingdom",
        "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
        "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
        "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
      };
}


The Xml File for Main activity is here:

Main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
></ListView>
</LinearLayout>


for making custom list view here is the custom xml file you can modified file as require listview .


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@drawable/list_back">
<TextView android:id="@+id/text" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textColor="#099900" />
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:scaleType="center"
android:id="@+id/imgview" android:src="@drawable/icon" android:layout_centerInParent="true" />
<CheckBox android:id="@+id/chkbox" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:checked="true" android:layout_alignParentRight="true" android:layout_marginRight="10dip" />
</RelativeLayout>