Archive

Posts Tagged ‘Java’

Call a function in android using string value(Using Java Reflection)

public void reflectionSample(String functionName){
		///this is used to call java methods using string value.		    
		Class c = MyClassName.class;
		///paraTypes: used to pass parameter to java function, its just a declaration.
		Class paraTypes[] = new Class[1];
		///the type of parameter is hash map.
		paraTypes[0] = HashMap.class;
		Method method = null;
		try {
			///class.getDeclaredMethod(java-function-name, java-function-parameter-type)
			///@param1: the string name of java function in class c
			///@param2: the type of parameter, like hashmap, string, int, etc
			method = c.getDeclaredMethod(functionName, paraTypes);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		HashMap<String, String> argument = new HashMap<String, String>();
		argument.put("functionName", functionName);

		Object arg[] = new Object[1];
		arg[0] = new HashMap(argument);
		try {
			///method.invoke calls the java function
			method.invoke(this, arg);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void calledFromReflection(HashMap<String, String> text){
		System.out.println("---------------|"+text.get("functionName")+"|-------------");
	}


reflectionSample("calledFromReflection");

Learn about reflection
Reflection doc

Advertisements
Categories: Android Tags: ,

Android: Check if Airplane mode is on

January 8, 2011 Leave a comment

This will help u check if your android is in airplane/fight mode

static boolean isAirplaneEnabled;
isAirplaneEnabled = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;

Enjoy.. 😉 !!!!!!!

Categories: Android Tags: ,

Fading color effect with TransitionDrawable :Android

October 5, 2010 3 comments
RelativeLayout layout = (RelativeLayout) findViewById(R.id.Layout);
layout.setBackgroundResource(R.drawable.translate);
TransitionDrawable transition = (TransitionDrawable) layout.getBackground();
transition.startTransition(5000);

This code gives you a fading effect like from yellow to white(original color).

translate.xml

<?xml version="1.0" encoding="UTF-8"?>
   <transition xmlns:android="http://schemas.android.com/apk/res/android">
          <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
          <item android:drawable="@drawable/new_state" />
          <item android:drawable="@drawable/original_state" />
   </transition>

new_state.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape   xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
    <solid android:color="#FFFFA7"/>
</shape>

original_state.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape   xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
    <solid android:color="#FFFFFF"/>
</shape>

Enjoy.. 😉 ..!!!

Categories: Android Tags: , ,

Rotation animation in android

October 5, 2010 4 comments

Using this code you can rotate an image

        RotateAnimation rAnim = new RotateAnimation(0.0f, 360.0f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
        rAnim.setRepeatCount(Animation.INFINITE);
        rAnim.setInterpolator(new LinearInterpolator());
        rAnim.setDuration(700);
        /* refreshIcon is object of an imageView */
        refreshIcon.startAnimation(rAnim);

Enjoy.. 😉 ..!!!

Categories: Android Tags: ,

FlowLayout in Android

September 28, 2010 45 comments

This post is linked to previous post click here.
This will help you to create FlowLayout in android

Referred from here

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;

/**
 *
 * @author RAW
 */
public class FlowLayout extends ViewGroup {

    private int line_height;

    public static class LayoutParams extends ViewGroup.LayoutParams {

        public final int horizontal_spacing;
        public final int vertical_spacing;

        /**
         * @param horizontal_spacing Pixels between items, horizontally
         * @param vertical_spacing Pixels between items, vertically
         */
        public LayoutParams(int horizontal_spacing, int vertical_spacing) {
            super(0, 0);
            this.horizontal_spacing = horizontal_spacing;
            this.vertical_spacing = vertical_spacing;
        }
    }

    public FlowLayout(Context context) {
        super(context);
    }

    public FlowLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        assert (MeasureSpec.getMode(widthMeasureSpec) != MeasureSpec.UNSPECIFIED);

        final int width = MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft() - getPaddingRight();
        int height = MeasureSpec.getSize(heightMeasureSpec) - getPaddingTop() - getPaddingBottom();
        final int count = getChildCount();
        int line_height = 0;

        int xpos = getPaddingLeft();
        int ypos = getPaddingTop();

        int childHeightMeasureSpec;
        if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
            childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST);
        } else {
            childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
        }


        for (int i = 0; i < count; i++) {
            final View child = getChildAt(i);
            if (child.getVisibility() != GONE) {
                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
                child.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), childHeightMeasureSpec);
                final int childw = child.getMeasuredWidth();
                line_height = Math.max(line_height, child.getMeasuredHeight() + lp.vertical_spacing);

                if (xpos + childw > width) {
                    xpos = getPaddingLeft();
                    ypos += line_height;
                }

                xpos += childw + lp.horizontal_spacing;
            }
        }
        this.line_height = line_height;

        if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.UNSPECIFIED) {
            height = ypos + line_height;

        } else if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
            if (ypos + line_height < height) {
                height = ypos + line_height;
            }
        }
        setMeasuredDimension(width, height);
    }

    @Override
    protected ViewGroup.LayoutParams generateDefaultLayoutParams() {
        return new LayoutParams(1, 1); // default of 1px spacing
    }

    @Override
    protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
        if (p instanceof LayoutParams) {
            return true;
        }
        return false;
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        final int count = getChildCount();
        final int width = r - l;
        int xpos = getPaddingLeft();
        int ypos = getPaddingTop();

        for (int i = 0; i < count; i++) {
            final View child = getChildAt(i);
            if (child.getVisibility() != GONE) {
                final int childw = child.getMeasuredWidth();
                final int childh = child.getMeasuredHeight();
                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
                if (xpos + childw > width) {
                    xpos = getPaddingLeft();
                    ypos += line_height;
                }
                child.layout(xpos, ypos, xpos + childw, ypos + childh);
                xpos += childw + lp.horizontal_spacing;
            }
        }
    }
}

Here the xml file.

/* you must write your package name and class name */
<org.android.FlowLayout
                android:id="@+id/flow_layout"
                android:layout_marginLeft="5dip"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"/>

This is very useful while creating bubble.

Enjoy.. 😉 ..!!!

Categories: Android Tags: , ,

Android: Create bubble like facebook

September 28, 2010 4 comments

create a class named Bubble and call wherever you want to create bubble

public class Bubble extends Activity {
       /* here FlowLayout is a custom layout, i will post soon */
       /*  ArrayList subjects_list, stores string value so that there would not be duplicate names */
   public static void getBubble(String myAutoComplete, final FlowLayout flowlayout, final ArrayList subjects_list, Context c) {

   String checksubClicked = myAutoComplete;

   if (!(checksubClicked.equals(""))) {

   if (!(subjects_list.contains(checksubClicked))) {
   subjects_list.add(myAutoComplete);

   /// creates bubble button
   final Button btn = new Button(c);
   LayoutParams flowLP = new LayoutParams(5, 5);
   btn.setBackgroundDrawable(c.getResources().getDrawable(R.drawable.bubble_layout));
   btn.setPadding(6, 2, 6, 2);
   btn.setTextSize(14);
   btn.setSingleLine(true);
   btn.setEllipsize(TruncateAt.END);
   btn.setTextColor(Color.BLACK);
   /// sets the text
   btn.setText(myAutoComplete + "  ");
   Resources res = c.getResources();
   Drawable image = res.getDrawable(R.drawable.bubble_input_close);
   /// sets the image to right
   btn.setCompoundDrawablesWithIntrinsicBounds(null, null, image, null);

   btn.setOnClickListener(new View.OnClickListener() {

   public void onClick(View arg0) {
   /// deletes bubble
   subjects_list.remove(btn.getText().toString().substring(0, btn.getText().toString().length() - 1).trim());
   /// this is to remove button from layout
   flowlayout.removeView(arg0);
   }
   });
    // flowLP is related to FlowLayout
   flowlayout.addView(btn, flowLP);
   }
   }
   }
}

In class where you want to create a bubble add
ArrayList subjects_list = new ArrayList();
FlowLayout flowlayout = (FlowLayout) findViewById(R.id.flow_layout);

Bubble.getBubble(stringValue, flowlayout, subjects_list,c);
here c is Context.

Here the xml file which contains the design of bubble named bubble_layout.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape      xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">

<solid   android:color="#EAEAEA"/>

<corners    android:bottomLeftRadius="3dip"
            android:topRightRadius="3dip"
            android:topLeftRadius="3dip"
            android:bottomRightRadius="3dip"
            />

</shape>

your bubble is ready

Enjoy.. 😉 ..!!!

Categories: Android Tags: ,
%d bloggers like this: