23 April, 2013

Android Gallery

You see all the images like an album using Gallery.

By: Umesh Ahir

ActivityMain.java


package com.gallery;

import android.app.Activity;
import android.os.Bundle;

public class ActivityMain extends Activity 
{
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        
        
        setContentView(R.layout.layout_gallery);
        
        Integer[] images = 
        { 
        R.drawable.ums_aaa, 
        R.drawable.ums_ahir,
                R.drawable.ums_ccc, 
                R.drawable.ums_bbb, 
                R.drawable.ums,
                R.drawable.dhvl,
                R.drawable.dhvlzandu,
                R.drawable.jgr,
                R.drawable.umsjgr
        };
        
        ImageAdapter adapter = new ImageAdapter(this, images);
        adapter.createReflectedImages();

        GalleryFlow galleryFlow = (GalleryFlow) findViewById(R.id.Gallery01);
        galleryFlow.setAdapter(adapter);
        
}
}

GalleryFlow.java

package com.gallery;

import android.content.Context;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Transformation;
import android.widget.Gallery;
import android.widget.ImageView;

public class GalleryFlow extends Gallery {

    private Camera mCamera = new Camera();
    private int mMaxRotationAngle = 60;
    private int mMaxZoom = -120;
    private int mCoveflowCenter;

    public GalleryFlow(Context context) {
            super(context);
            this.setStaticTransformationsEnabled(true);
    }

    public GalleryFlow(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.setStaticTransformationsEnabled(true);
    }

    public GalleryFlow(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            this.setStaticTransformationsEnabled(true);
    }

    public int getMaxRotationAngle() {
            return mMaxRotationAngle;
    }

    public void setMaxRotationAngle(int maxRotationAngle) {
            mMaxRotationAngle = maxRotationAngle;
    }

    public int getMaxZoom() {
            return mMaxZoom;
    }

    public void setMaxZoom(int maxZoom) {
            mMaxZoom = maxZoom;
    }

    private int getCenterOfCoverflow() {
            return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2
                            + getPaddingLeft();
    }

    private static int getCenterOfView(View view) {
            return view.getLeft() + view.getWidth() / 2;
    }

    protected boolean getChildStaticTransformation(View child, Transformation t) {

            final int childCenter = getCenterOfView(child);
            final int childWidth = child.getWidth();
            int rotationAngle = 0;

            t.clear();
            t.setTransformationType(Transformation.TYPE_MATRIX);

            if (childCenter == mCoveflowCenter) {
                    transformImageBitmap((ImageView) child, t, 0);
            } else {
                    rotationAngle = (int) (((float) (mCoveflowCenter - childCenter) / childWidth) * mMaxRotationAngle);
                    if (Math.abs(rotationAngle) > mMaxRotationAngle) {
                            rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle
                                            : mMaxRotationAngle;
                    }
                    transformImageBitmap((ImageView) child, t, rotationAngle);
            }

            return true;
    }

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            mCoveflowCenter = getCenterOfCoverflow();
            super.onSizeChanged(w, h, oldw, oldh);
    }

    private void transformImageBitmap(ImageView child, Transformation t,
                    int rotationAngle) {
            mCamera.save();
            final Matrix imageMatrix = t.getMatrix();
            final int imageHeight = child.getLayoutParams().height;
            final int imageWidth = child.getLayoutParams().width;
            final int rotation = Math.abs(rotationAngle);

          
            mCamera.translate(0.0f, 0.0f, 100.0f);

            // As the angle of the view gets less, zoom in
            if (rotation < mMaxRotationAngle) {
                    float zoomAmount = (float) (mMaxZoom + (rotation * 1.5));
                    mCamera.translate(0.0f, 0.0f, zoomAmount);
            }

           
            mCamera.rotateY(rotationAngle);
            mCamera.getMatrix(imageMatrix);
            imageMatrix.preTranslate(-(imageWidth / 2), -(imageHeight / 2));
            imageMatrix.postTranslate((imageWidth / 2), (imageHeight / 2));
            mCamera.restore();
    }
}

ImageAdapter.java

package com.gallery;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;
import android.graphics.Shader.TileMode;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class ImageAdapter extends BaseAdapter {

int mGalleryItemBackground;
private Context mContext;
private Integer[] mImageIds;
private ImageView[] mImages;

public ImageAdapter(Context c, Integer[] ImageIds) {
mContext = c;
mImageIds = ImageIds;
mImages = new ImageView[mImageIds.length];
}

public boolean createReflectedImages() {
final int reflectionGap = 4;
int index = 0;

for (int imageId : mImageIds) {
Bitmap originalImage = BitmapFactory.decodeResource(mContext
.getResources(), imageId);
int width = originalImage.getWidth();
int height = originalImage.getHeight();

Matrix matrix = new Matrix();
matrix.preScale(1, -1);

Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height / 2, width, height / 2, matrix, false);

Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);

Canvas canvas = new Canvas(bitmapWithReflection);

canvas.drawBitmap(originalImage, 0, 0, null);

Paint deafaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap,
deafaultPaint);

canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0, originalImage
.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);

paint.setShader(shader);

paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);

ImageView imageView = new ImageView(mContext);
imageView.setImageBitmap(bitmapWithReflection);
imageView.setLayoutParams(new GalleryFlow.LayoutParams(180, 240));
// imageView.setScaleType(ScaleType.MATRIX);
mImages[index++] = imageView;
}
return true;
}

private Resources getResources() {
// TODO Auto-generated method stub
return null;
}

public int getCount() {
return mImageIds.length;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
return mImages[position];
}

public float getScale(boolean focused, int offset) {
return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
}

}

layout_gallery.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    >

<com.gallery.GalleryFlow 
android:id="@+id/Gallery01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" android:layout_centerInParent="true"/>
</RelativeLayout>

ScreenShot
umesh (ums)

ums

umesh ahir


Progressbar Example

MainActivity.java


package com.ums.progressbar_umesh;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity 
{
Button btnStartProgress;

    private ProgressDialog _progressDialog;
    private int _progress = 0;
    private Handler _progressHandler;
    
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnStartProgress = (Button) findViewById(R.id.button1);
btnStartProgress.setOnClickListener(new OnClickListener() 
{

@Override
public void onClick(View arg0) 
{
// TODO Auto-generated method stub
showDialog(1);
_progress = 0;
_progressDialog.setProgress(0);
_progressHandler.sendEmptyMessage(0);
}
});

_progressHandler = new Handler() 
{
public void handleMessage(Message msg) 
{
super.handleMessage(msg);
if (_progress >= 100) 
{
   _progressDialog.dismiss();
} else 
{
   _progress++;
   _progressDialog.incrementProgressBy(15);
   _progressHandler.sendEmptyMessageDelayed(0, 100);
}
}
};
}

@Override
protected Dialog onCreateDialog(int i)
    {
            _progressDialog = new ProgressDialog(this);
            _progressDialog.setIcon(R.drawable.ums_logo);
            _progressDialog.setTitle("Downloading files...");
            _progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            _progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Conceal", new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int whichButton)
                {
                    Toast.makeText(getBaseContext(),
                            "Conceal clicked!", Toast.LENGTH_SHORT).show();
                }
            });
            
            _progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog,
                     int whichButton)
                {
                    Toast.makeText(getBaseContext(),
                            "Cancel clicked!", Toast.LENGTH_SHORT).show();
                }
            });
            return _progressDialog;
}
}

activity_main.xml


<AbsoluteLayout 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" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:layout_x="39dp"
        android:layout_y="141dp"
        android:text="Download File"
        android:textSize="30sp" />

</AbsoluteLayout>


ScreenShot
Click on Button to see Progress
Click on Button to see Progress


Progressbar
Progressbar with Dialog






18 April, 2013

JSONArray and JSONObject Example


Data just look like:


{
       "Id": "10MCA001",
       "Bdate": "30/07/1990",

       "Score": 
       [
           {
               "mid_Exam": 25,
               "outOf": 30
           },
           {
               "gtu_Exam": 231,
               "outOf": 1570
           }
       ],
       "Report": 
       [
           {
               "college_Remarks": "Good",
               "sports_Remarks": "Best",
               "type_of_Sport" : "Cricket"
           }
       ]
   }


MainActivity.java


package com.example.json_ums_test;

import android.os.Bundle;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity 
{

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

TextView JsonSrc = (TextView)findViewById(R.id.json_src);
   TextView JsonResult = (TextView)findViewById(R.id.json_result);

   
//    {
//        "Id": "10MCA001",
//        "Bdate": "30/07/1990",
//
//        "Score": 
//        [
//            {
//                "mid_Exam": 25,
//                "outOf": 30
//            },
//            {
//                "gtu_Exam": 231,
//                "outOf": 1570
//            }
//        ],
//        "Report": 
//        [
//            {
//                "college_Remarks": "Good",
//                "sports_Remarks": "Best",
//                "type_of_Sport" : "Cricket"
//            }
//        ]
//    }

   final String customJSON = " {\"Id\":\"10MCA001\",\"Bdate\":\"30/07/1990\",\"Score\":[{\"mid_Exam\":25,\"outOf\":30},{\"gtu_Exam\":231,\"outOf\":1570}],\"Report\":[{\"college_Remarks\":\"Good\",\"sports_Remarks\":\"Best\",\"type_of_Sport\":\"Cricket\"}]} ";
   JsonSrc.setText(customJSON);
   
   try
   {
    JSONObject jsonObject = new JSONObject(customJSON);
   
    String myId = jsonObject.getString("Id");
    String myBdate = jsonObject.getString("Bdate");

   
    String stringJsonResult = "Id: " + myId + "\n"
            + "Bdate: " + myBdate;
   
   
   
    JSONArray jsonArray = jsonObject.getJSONArray("Score");
    JSONObject arrayElement_Score = jsonArray.getJSONObject(0);
    String mid_score = arrayElement_Score.getString("mid_Exam");
    String outof = arrayElement_Score.getString("outOf");
       
    stringJsonResult += "\n\nScore:"
    + "\n\n:: Mid-Semester Exam ::\n"
            + "Score: " + mid_score + "\t"
            + "Out Of: " + outof;
   
    JSONObject arrayElement_Score1 = jsonArray.getJSONObject(1);
    String gtu_score = arrayElement_Score1.getString("gtu_Exam");
    String outof1 = arrayElement_Score1.getString("outOf");
       
    stringJsonResult += 
    "\n\n:: GTU Exam ::\n"
            + "Score: " + gtu_score + "\t"
            + "Out Of: " + outof1;
   
   
   
    JSONArray jsonArray1 = jsonObject.getJSONArray("Report");
    JSONObject arrayElement_Report = jsonArray1.getJSONObject(0);
    String college_Remarks = arrayElement_Report.getString("college_Remarks");
    String sports_Remarks = arrayElement_Report.getString("sports_Remarks");
    String type_of_Sport = arrayElement_Report.getString("type_of_Sport");
   
    stringJsonResult += "\n\nReport: \n"
            + "College Remarks: " + college_Remarks + "\n"
            + "Sports Remarks: " + sports_Remarks+ "\n"
            + "Sport Type: " + type_of_Sport;
   
   
    JsonResult.setText("\n" + stringJsonResult);
   
   }
   catch (JSONException e)
   {
    // TODO Auto-generated catch block
    e.printStackTrace();
    Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
   }
   
}
}

activity_main.xml



<AbsoluteLayout 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=".MainActivity" >

    <TextView
        android:id="@+id/json_src"
        android:layout_width="280dp"
        android:layout_height="106dp"
        android:layout_x="26dp"
        android:layout_y="23dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/json_result"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_x="25dp"
        android:layout_y="134dp"
        android:text="TextView" />

</AbsoluteLayout>


ScreenShot


JSONArray and JSONObject Example
JSONArray and JSONObject Example




17 April, 2013

JSONStringer Example


Data just look like: 

[
    {
        "Umesh": 
        [
            {
                "name": "Umesh",
                "age": "22 years",
                "hobby": "Playing Cricket"
            }
        ],
        "Dhaval":
        [
            {
                "name": "Dhaval",
                "age": "23 years",
                "hobby": "Cooking"
            }
        ],
        "Jigar":
        [
            {
                "name": "Jigar",
                "age": "22 years",
                "hobby": "Sleeping"
            }
        ]
    }
]



MainActivity.java


package com.example.ums_dhvl_example;

import org.json.JSONException;
import org.json.JSONStringer;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity
{

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

JSONStringer stringer = new JSONStringer();

try 
{

TextView t1 = (TextView) findViewById(R.id.textView1);

String jsonStr = stringer.array().object()

.key("Umesh").array().object()
.key("name").value("Umesh")
.key("age").value("22 years")
.key("hobby").value("Playing Cricket")
.endObject().endArray()

.key("Dhaval").array().object()
.key("name").value("Dhaval")
.key("age").value("23 years")
.key("hobby").value("Cooking")
.endObject().endArray()

.key("Jigar").array().object()
.key("name").value("Jigar")
.key("age").value("22 years")
.key("hobby").value("Sleeping")
.endObject().endArray()

.endObject().endArray()

.toString();
t1.setText(jsonStr);


catch (JSONException e) 
{
e.printStackTrace();
}

}
}

activity_main.xml

<AbsoluteLayout 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=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="280dp"
        android:layout_height="406dp"
        android:layout_x="20dp"
        android:layout_y="38dp"
        android:text="TextView" />

</AbsoluteLayout>

ScreenShot