Thursday, December 17, 2015

Merry Christmas live wallpaper



Merry Christmas live wallpaper

 

Merry Christmas and Happy New Year 2016!

Christmas Live Wallpaper, having cool effect of falling snow and changing background color for celebrating Christmas and winter snow seasons! Hope you will enjoy the snowfall in this frozen cold weather! Happy Holidays to your and family!

You can also countdown to Xmas!

To use: Home -> Menu -> Wallpapers -> Live Wallpapers
Or
Home -> Menu -> Live Wallpapers

If you like this app please give your valuable rate and comment and also share to your friends group and family too.

Screen shot



Get more application from https://play.google.com/store/apps/developer?id=Pratik+Nandha&hl=en


Get it on Google Play

Thursday, August 27, 2015

Transit with Zoom animation in Android


Here I am providing you the example how to use Transit and Zoom effect with animation.

First image you want to transit use as drawable or create background. I have created background and apply transit effect on that

draw_cupcake.xml

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

    <gradient android:startColor="@color/cupcake_start"
        android:endColor="@color/cupcake_end"
        android:angle="270"/>

</shape>


My color code

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="cupcake_start">#007f9c</color>
    <color name="cupcake_end">#02adc7</color>
</resources>


Next is transit effect which I am applying on background.

anim.xml

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

    <translate
        android:duration="5000"
        android:fromYDelta="-100%p"
        android:toYDelta="0" />

</set>


Now for Zoom effect

anim_zoom.xml

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

    <scale
        android:duration="2000"
        android:fromXScale="0"
        android:fromYScale="0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="0.5"
        android:toYScale="0.5" />

</set>


Here is my layout file

main_activity.xml

 <LinearLayout 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:orientation="horizontal" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ImageView
            android:id="@+id/img1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/draw_cupcake" />

        <ImageView
            android:id="@+id/img2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_launcher"
            android:visibility="gone" />
    </FrameLayout>

</LinearLayout>


My MainActivity.java

package com.animsplash;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends Activity {

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

        Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim);
        anim.setInterpolator((new AccelerateDecelerateInterpolator()));
        anim.setFillAfter(true);
        ImageView img1 = (ImageView) findViewById(R.id.img1);
        img1.setAnimation(anim);

        anim.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub

                Animation animzoom = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_zoom);
                animzoom.setInterpolator((new AccelerateDecelerateInterpolator()));
                animzoom.setFillAfter(true);
                ImageView img2 = (ImageView) findViewById(R.id.img2);
                img2.setVisibility(View.VISIBLE);
                img2.setAnimation(animzoom);
            }
        });

    }
}



You can copy the code and create yourself this.

Happy to help you.

Friday, August 14, 2015

Receiving simple Data from other Apps


Receiving Simple Data from Other Apps

Just as your application can send data to other applications, so too can it easily receive data from applications.

Update Your Manifest

<activity android:name=".ui.MyActivity" >
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="image/*" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SEND_MULTIPLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="image/*" />
    </intent-filter>
</activity>
 
 
Handle the Incoming Content

void onCreate (Bundle savedInstanceState) {
    ...
    // Get intent, action and MIME type
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            handleSendText(intent); // Handle text being sent
        } else if (type.startsWith("image/")) {
            handleSendImage(intent); // Handle single image being sent
        }
    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
        if (type.startsWith("image/")) {
            handleSendMultipleImages(intent); // Handle multiple images being sent
        }
    } else {
        // Handle other intents, such as being started from the home screen
    }
    ...
}
void handleSendText(Intent intent) {
    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
    if (sharedText != null) {
        // Update UI to reflect text being shared
    }
}
void handleSendImage(Intent intent) {
    Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    if (imageUri != null) {
        // Update UI to reflect image being shared
    }
}
void handleSendMultipleImages(Intent intent) {
    ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
    if (imageUris != null) {
        // Update UI to reflect multiple images being shared
    }
}
 
 

 



 

Get absolute path for all the support version


How to get absolute path when select image from gallery and SD Card (Kitkat and lower android version)?

In Kitkat version we get different Uri format(DocumentProvider)
 
Now Uri format like this : content://com.android.providers.media.documents/document/image:3951

Before Uri format like this : content://media/external/images/media/3951.

1. AbsolutePathActivity.java Activity Class

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class AbsolutePathActivity extends Activity
{
 private static final int MY_INTENT_CLICK=302;
 private TextView txta;
 private Button btn_selectImage;
 
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_absolutepath);
 
  txta = (TextView) findViewById(R.id.textView1);
  btn_selectImage = (Button) findViewById(R.id.btn_selectImage);
 
  btn_selectImage.setOnClickListener(new OnClickListener()
  {
   @Override
   public void onClick(View v)
   {
    Intent intent = new Intent();
    intent.setType("*/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "<span class="IL_AD" id="IL_AD2">Select</span> File"),MY_INTENT_CLICK);
   }
  });
 
 }
 
 @Override
 public void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  if (resultCode == RESULT_OK)
  {
   if (requestCode == MY_INTENT_CLICK)
   {
    if (null == data) return;
 
    String selectedImagePath;
    Uri selectedImageUri = data.getData();
 
    //MEDIA GALLERY
    selectedImagePath = ImageFilePath.getPath(getApplicationContext(), selectedImageUri);
    Log.i("Image File Path", ""+selectedImagePath);
    txta.setText("File Path : \n"+selectedImagePath);
   }
  }
 }

Copy below class on your application for getting Gallery image file Uri AbsolutePath.

2.ImageFilePath.java  

import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
 
public class ImageFilePath
{
  
  
 /**
  * <span class="IL_AD" id="IL_AD11">Method</span> for return file path of Gallery image
  *
  * @param context
  * @param uri
  * @return path of the selected image file from gallery
  */
 public static String getPath(final Context context, final Uri uri)
 {
 
  //check here to KITKAT or new version
  final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
 
  // DocumentProvider
  if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
    
   // ExternalStorageProvider
   if (isExternalStorageDocument(uri)) {
    final String docId = DocumentsContract.getDocumentId(uri);
    final String[] split = docId.split(":");
    final String type = split[0];
 
    if ("primary".equalsIgnoreCase(type)) {
     return Environment.getExternalStorageDirectory() + "/" + split[1];
    }
   }
   // DownloadsProvider
   else if (isDownloadsDocument(uri)) {
 
    final String id = DocumentsContract.getDocumentId(uri);
    final Uri contentUri = ContentUris.withAppendedId(
      Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
 
    return getDataColumn(context, contentUri, null, null);
   }
   // MediaProvider
   else if (isMediaDocument(uri)) {
    final String docId = DocumentsContract.getDocumentId(uri);
    final String[] split = docId.split(":");
    final String type = split[0];
 
    Uri contentUri = null;
    if ("image".equals(type)) {
     contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    } else if ("video".equals(type)) {
     contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    } else if ("audio".equals(type)) {
     contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    }
 
    final String selection = "_id=?";
    final String[] selectionArgs = new String[] {
      split[1]
    };
 
    return getDataColumn(context, contentUri, selection, selectionArgs);
   }
  }
  // MediaStore (and general)
  else if ("content".equalsIgnoreCase(uri.getScheme())) {
 
   // Return the remote address
   if (isGooglePhotosUri(uri))
    return uri.getLastPathSegment();
 
   return getDataColumn(context, uri, null, null);
  }
  // File
  else if ("file".equalsIgnoreCase(uri.getScheme())) {
   return uri.getPath();
  }
 
  return null;
 }
 
 /**
  * Get the <span class="IL_AD" id="IL_AD10">value</span> of the data column for this Uri. This is useful for
  * MediaStore Uris, and other file-based ContentProviders.
  *
  * @param context The context.
  * @param uri The Uri to query.
  * @param selection (Optional) Filter used in the query.
  * @param selectionArgs (Optional) Selection <span class="IL_AD" id="IL_AD7">arguments</span> used in the query.
  * @return The value of the _data column, which is typically a file path.
  */
 public static String getDataColumn(Context context, Uri uri, String selection,
   String[] selectionArgs) {
 
  Cursor cursor = null;
  final String column = "_data";
  final String[] projection = {
    column
  };
 
  try {
   cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
     null);
   if (cursor != null && cursor.moveToFirst()) {
    final int index = cursor.getColumnIndexOrThrow(column);
    return cursor.getString(index);
   }
  } <span class="IL_AD" id="IL_AD12">finally</span> {
   if (cursor != null)
    cursor.close();
  }
  return null;
 }
 
 /**
  * @param uri The Uri to check.
  * @return Whether the Uri authority is ExternalStorageProvider.
  */
 public static boolean isExternalStorageDocument(Uri uri) {
  return "com.android.externalstorage.documents".equals(uri.getAuthority());
 }
 
 /**
  * @param uri The Uri to check.
  * @return Whether the Uri authority is DownloadsProvider.
  */
 public static boolean isDownloadsDocument(Uri uri) {
  return "com.android.providers.downloads.documents".equals(uri.getAuthority());
 }
 
 /**
  * @param uri The Uri to check.
  * @return Whether the Uri authority is MediaProvider.
  */
 public static boolean isMediaDocument(Uri uri) {
  return "com.android.providers.media.documents".equals(uri.getAuthority());
 }
 
 /**
  * @param uri The Uri to check.
  * @return Whether the Uri authority is Google Photos.
  */
 public static boolean isGooglePhotosUri(Uri uri) {
  return "com.google.android.apps.photos.content".equals(uri.getAuthority());
 }
}
 

3. activity_absolutepath.xml layout file

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="30dp" >
 
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example code for get absolute path when select image from gallery"
        android:textSize="14sp"
        android:textStyle="bold" />
 
    <Button
        android:id="@+id/btn_selectImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:text="Select Image" />
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="14sp"
        android:textStyle="bold" />
 
</LinearLayout>


4. AndroidManifest.xml file

<?xml version="1.0" encoding="utf-8"?>
    package="com.limbani.masterapp"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.limbani.masterapp.AbsolutePathActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
  

Original post here, this is just for my reference only to getting quick code for my project.

Happy to help you :)

Thursday, May 7, 2015

Convert dp to px


Convert dp to px


Converting Android’s density independent pixels to actual pixels is quite easy. I always use a function like the below in my projects. It helps keeping apps running correctly with different resolutions:
 
private int dpToPx(int dp) { 

     float density = getApplicationContext().getResources().getDisplayMetrics().density;

     returnMath.round((float)dp* density);

}
For maximum performance, it’s best to fetch the density value once and use it throughout the app life-cycle. Like this:

public class Conv
{
    public static float mDensity;

    public static int dpToPx(int dp)
    {
        return Math.round((float)dp * mDensity);
    }    
}

public class MainActivity extends Activity
{
    @Override public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

 Conv.density = getResources().getDisplayMetrics().density;

        Log.i("Test", Integer.toString(Conv.dpToPx(100)));
    }
}