Adsense Ad

Friday 22 September 2017

Excel: Convert Scientific Notation To Text

Convert Scientific Notation To Text With Formulas

The following formulas also can help you to convert the list of scientific notation to text.
1. Please enter this formula: =trim(A1) into a blank cell, B1 for instance, see screenshot:
doc-convert-sientific-to-text-7
2. Then drag the fill handle over to the range that you want to apply this formula, and you will get the result as you want:
doc-convert-sientific-to-text-8
Note: This UPPER function: =UPPER(A1) also can help you, please apply any one as you like.

Thursday 21 September 2017

Android: Shared Preferences

Creating / Using Shared Preferences

Android provides many ways of storing data of an application. One of this way is called Shared Preferences. Shared Preferences allow you to save and retrieve data in the form of key,value pair.

In order to use shared preferences, you have to call a method getSharedPreferences() that returns a SharedPreference instance pointing to the file that contains the values of preferences.

The first parameter is the key and the second parameter is the MODE. Apart from private there are other modes available that are listed below −
Sr.NoMode & description
1
MODE_APPEND
This will append the new preferences with the already existing preferences
2
MODE_ENABLE_WRITE_AHEAD_LOGGING
Database open flag. When it is set , it would enable write ahead logging by default
3
MODE_MULTI_PROCESS
This method will check for modification of preferences even if the sharedpreference instance has already been loaded
4
MODE_PRIVATE
By setting this mode, the file can only be accessed using calling application
5
MODE_WORLD_READABLE
This mode allow other application to read the preferences
6
MODE_WORLD_WRITEABLE
This mode allow other application to write the preferences
You can save something in the sharedpreferences by using SharedPreferences.Editor class. You will call the edit method of SharedPreference instance and will receive it in an editor object. Its syntax is −
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();
Apart from the putString method , there are methods available in the editor class that allows manipulation of data inside shared preferences. They are listed as follows −
Sr. NOMode & description
1
apply()
It is an abstract method. It will commit your changes back from editor to the sharedPreference object you are calling
2
clear()
It will remove all values from the editor
3
remove(String key)
It will remove the value whose key has been passed as a parameter
4
putLong(String key, long value)
It will save a long value in a preference editor
5
putInt(String key, int value)
It will save a integer value in a preference editor
6
putFloat(String key, float value)
It will save a float value in a preference editor

Create a separate class for shared preferences i.e.

package com.example.user.dailybook;

import android.content.Context;
import android.content.SharedPreferences;

/** * Created by User on 8/26/2017. */public class Config {
    SharedPreferences sp;
    SharedPreferences.Editor spe;

    public Config(Context cnt){
        sp = cnt.getSharedPreferences("MyPref",Context.MODE_PRIVATE);
        spe = sp.edit();
        spe.commit();
    }

    public void setLocal(String key,String val){
        spe.putString(key,val);
        spe.commit();
    }

    public String getLocal(String key){
        String outval = sp.getString(key,null);
        return outval;
    }

    public void removeLocal(){
        spe.clear();
        spe.commit();
    }
}


How to use shared preferences class for storing data.

Declaration

Config cfg;



Initialization

cfg = new Config(this);



Assigning values with key variables
cfg.setLocal("loggedin","Y");
cfg.setLocal("usrid",usrname.getText().toString());


Getting / using values with key variables
if(!cfg.getLocal("loggedin").isEmpty()){
    Intent   i = new Intent(SplashScreen.this,HomeActivity.class);
    startActivity(i);
    finish();
}else{
    Intent   i = new Intent(SplashScreen.this,LoginActivity.class);
    startActivity(i);
    finish();
}

OR Use remove local to clear all data

cfg.removeLocal();


Grid view using drawable images in android

How to create Grid view using drawable images in android

First create a simple app with empty activity
Now create grid view via xml

<GridView
   
android:layout_width="match_parent"
   
android:layout_height="wrap_content"
   
android:numColumns="2"
   
android:id="@+id/gview"
   
/>

Now initialize in java file
GridView gridView;

gridView = (GridView) view.findViewById(R.id.gview);

Create new layout resource .xml file for thumbnails

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical" 
android:layout_width="match_parent"

android:layout_height="match_parent">



    <ImageView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:adjustViewBounds="true"

        android:id="@+id/thumbimg"/>

    <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:id="@+id/thumbtxt"

        />

</LinearLayout>



Now Create Grid Adapter Class

package com.example.user.goruntu;



import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.HashMap;



public class GridAdapter extends BaseAdapter {

    ArrayList<HashMap<String,String>> data;

    Context cnt;

    public GridAdapter(Context cnt, ArrayList<HashMap<String,String>> data){

        this.data = data;

        this.cnt = cnt;

    }

    @Override

    public int getCount() {

        return data.size();

    }



    @Override

    public Object getItem(int position) {

        return data.get(position);

    }



    @Override

    public long getItemId(int position) {

        return 0;

    }



    @Override

    public View getView(int position, View view, ViewGroup viewGroup) {

        HashMap<String,String> item = data.get(position);

        ViewHolder viewHolder = new ViewHolder();

        LayoutInflater inflater = LayoutInflater.from(cnt);



        view=inflater.inflate(R.layout.griditems,viewGroup,false);

        viewHolder.thumbimg=(ImageView) view.findViewById(R.id.thumbimg);

        viewHolder.thumbtxt=(TextView) view.findViewById(R.id.thumbtxt);

        if(item.get("imgname").equalsIgnoreCase("flw1")){

            viewHolder.thumbimg.setImageResource(R.drawable.flw1);

            viewHolder.thumbtxt.setText(item.get("imgtxt"));

        }else{

            viewHolder.thumbimg.setImageResource(R.drawable.flw2);

            viewHolder.thumbtxt.setText(item.get("imgtxt"));

        }

        return view;

    }



    class ViewHolder{

        ImageView thumbimg;

        TextView  thumbtxt;

    }

}


Go to Main activity class and assign grid view with above adapter
package com.example.user.goruntu;



import android.support.design.widget.TabLayout;

import android.support.v4.view.ViewPager;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.WindowManager;



import java.util.ArrayList;

import java.util.HashMap;



public class MainActivity extends AppCompatActivity {

GridView gridView;

ArrayList<HashMap<String,String>> list;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_main);

gridView = (GridView) view.findViewById(R.id.gview);

list = new ArrayList<>();

for(int i=0;i<=10;i++) {



    HashMap<String, String> hashMap = new HashMap<>();

    hashMap.put("imgtxt",Integer.toString(i) + ".) Flowers");

    if(i%2==0) {

        hashMap.put("imgname", "flw1");

        list.add(hashMap);

    }else{

        hashMap.put("imgname", "flw2");

        list.add(hashMap);

    }

}

GridAdapter adp = new GridAdapter(view.getContext(),list);

gridView.setAdapter(adp);

    }
}


Thursday 14 September 2017

How to use sounds/.mp3 in android

Sounds/.mp3 in Android.

MediaPlayer:

The Android multimedia framework includes support for playing variety of common media types, so that you can easily integrate audio, video and images into your applications. You can play audio or video from media files stored in your application's resources (raw resources), from standalone files in the filesystem, or from a data stream arriving over a network connection, all using MediaPlayer APIs.This document shows you how to write a media-playing application that interacts with the user and the system in order to obtain good performance and a pleasant user experience.

Steps:

First create a project with button or toggle or switch button.

<Switch    
android:layout_width="wrap_content"    
android:layout_height="wrap_content"    
android:id="@+id/sw"    
android:text="Music Off "    
/>


<ImageButton    
android:layout_width="wrap_content"    
android:layout_height="wrap_content"    
android:background="#ffffff"    
android:src="@drawable/on"    
android:layout_centerHorizontal="true"    
android:id="@+id/on"
android:layout_marginTop="30dp"    
/>


Now create a directory in res directory and named it as raw


Now copy paste sound media files in raw directory.

Now go to java class and change in oncreate:

ImageButton off;
Switch aSwitch;
off = (ImageButton) view.findViewById(R.id.off);
aSwitch = (Switch) view.findViewById(R.id.sw);
final MediaPlayer mp = MediaPlayer.create(view.getContext(),R.raw.wholetdogout);

aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(isChecked){
            aSwitch.setText("Music On ");
            if(mp.isPlaying()){
                mp.seekTo(0);
            }else{
                mp.start();
            }


        }else{
            aSwitch.setText("Music Off ");
            mp.pause();
        }
    }
});

final MediaPlayer bb = MediaPlayer.create(view.getContext(),R.raw.shutteraa);

off.setOnClickListener(new View.OnClickListener() {
    @Override    public void onClick(View v) {
        if (hasflash==1){
            parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
            camera.setParameters(parameters);
            camera.stopPreview();
        }else {
            Toast.makeText(getActivity(),"Please Install Camera",Toast.LENGTH_SHORT).show();
        }
        on.setVisibility(View.VISIBLE);
        imgvu.setImageResource(R.drawable.rszoff);
        off.setVisibility(View.GONE);
        if(bb.isPlaying()) {
            bb.seekTo(0);
        }else{
            bb.start();
        }
    }
});




Wednesday 13 September 2017

android-gif-drawable

android-gif-drawable

                           https://www.youtube.com/watch?v=EOFY0cwNjuk
Views and Drawable for animated GIFs in Android.

Overview

Bundled GIFLib via JNI is used to render frames. This way should be more efficient than WebView or Movie classes.

Javadoc

Setup

Gradle (Android Studio)

Insert the following dependency to build.gradle file of your project.
dependencies {
    compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.8'
}
Note that Maven central repository should be defined eg. in top-level build.gradle like this:
buildscript {
    repositories {
        mavenCentral()
    }
}
allprojects {
    repositories {
        mavenCentral()
    }
}

Gradle, snapshot repository

Current development builds (build from dev branch) are published to OSS snapshot repository. To use them, specify repository URL in repositories block:
repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
    compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.+'
}

Maven dependency

<dependency>
    <groupId>pl.droidsonroids.gif</groupId>
    <artifactId>android-gif-drawable</artifactId>
    <version>insert latest version here</version>
    <type>aar</type>
</dependency>

Eclipse

See Sample eclipse project with setup instructions.

Download

Requirements

  • Android 2.3+ (API level 9+)
  • for GifTextureView Android 4.0+ (API level 14+) and hardware-accelerated rendering
  • for GifTexImage2D OpenGL ES 2.0+

Building from source

Usage

Sample project

See sample directory. Sample project is under construction. Not all features are covered yet.

From XML

The simplest way is to use GifImageView (or GifImageButton) like a normal ImageView:
<pl.droidsonroids.gif.GifImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/src_anim"
    android:background="@drawable/bg_anim"
    />
If drawables declared by android:src and/or android:background are GIF files then they will be automatically recognized as GifDrawables and animated. If given drawable is not a GIF then mentioned Views work like plain ImageView and ImageButton.
GifTextView allows you to use GIFs as compound drawables and background.
<pl.droidsonroids.gif.GifTextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawableTop="@drawable/left_anim"
    android:drawableStart="@drawable/left_anim"
    android:background="@drawable/bg_anim"
    />

From Java code

GifImageViewGifImageButton and GifTextView have also hooks for setters implemented. So animated GIFs can be set by calling setImageResource(int resId) and setBackgroundResource(int resId)
GifDrawable can be constructed directly from various sources:
//asset file
GifDrawable gifFromAssets = new GifDrawable( getAssets(), "anim.gif" );
  
//resource (drawable or raw)
GifDrawable gifFromResource = new GifDrawable( getResources(), R.drawable.anim );
  
//Uri
ContentResolver contentResolver = ... //can be null for file:// Uris
GifDrawable gifFromUri = new GifDrawable( contentResolver, gifUri );

//byte array
byte[] rawGifBytes = ...
GifDrawable gifFromBytes = new GifDrawable( rawGifBytes );
  
//FileDescriptor
FileDescriptor fd = new RandomAccessFile( "/path/anim.gif", "r" ).getFD();
GifDrawable gifFromFd = new GifDrawable( fd );
  
//file path
GifDrawable gifFromPath = new GifDrawable( "/path/anim.gif" );
  
//file
File gifFile = new File(getFilesDir(),"anim.gif");
GifDrawable gifFromFile = new GifDrawable(gifFile);
  
//AssetFileDescriptor
AssetFileDescriptor afd = getAssets().openFd( "anim.gif" );
GifDrawable gifFromAfd = new GifDrawable( afd );
    
//InputStream (it must support marking)
InputStream sourceIs = ...
BufferedInputStream bis = new BufferedInputStream( sourceIs, GIF_LENGTH );
GifDrawable gifFromStream = new GifDrawable( bis );
  
//direct ByteBuffer
ByteBuffer rawGifBytes = ...
GifDrawable gifFromBytes = new GifDrawable( rawGifBytes ); 
InputStreams are closed automatically in finalizer if GifDrawable is no longer needed so you don't need to explicitly close them. Calling recycle() will also close underlying input source.
Note that all input sources need to have ability to rewind to the beginning. It is required to correctly play animated GIFs (where animation is repeatable) since subsequent frames are decoded on demand from source.

Animation control

GifDrawable implements an Animatable and MediaPlayerControl so you can use its methods and more:
  • stop() - stops the animation, can be called from any thread
  • start() - starts the animation, can be called from any thread
  • isRunning() - returns whether animation is currently running or not
  • reset() - rewinds the animation, does not restart stopped one
  • setSpeed(float factor) - sets new animation speed factor, eg. passing 2.0f will double the animation speed
  • seekTo(int position) - seeks animation (within current loop) to given position (in milliseconds)
  • getDuration() - returns duration of one loop of the animation
  • getCurrentPosition() - returns elapsed time from the beginning of a current loop of animation
Using MediaPlayerControl
Standard controls for a MediaPlayer (like in VideoView) can be used to control GIF animation and show its current progress.
Just set GifDrawable as MediaPlayer on your MediaController like this:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GifImageButton gib = new GifImageButton(this);
    setContentView(gib);
    gib.setImageResource(R.drawable.sample);
    final MediaController mc = new MediaController(this);
    mc.setMediaPlayer((GifDrawable) gib.getDrawable());
    mc.setAnchorView(gib);
    gib.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mc.show();
        }
   });
}

Retrieving GIF metadata

  • getLoopCount() - returns a loop count as defined in NETSCAPE 2.0 extension
  • getNumberOfFrames() - returns number of frames (at least 1)
  • getComment() - returns comment text (null if GIF has no comment)
  • getFrameByteCount() - returns minimum number of bytes that can be used to store pixels of the single frame
  • getAllocationByteCount() - returns size (in bytes) of the allocated memory used to store pixels of given GifDrawable
  • getInputSourceByteCount() - returns length (in bytes) of the backing input data
  • toString() - returns human readable information about image size and number of frames (intended for debugging purpose)

Associating single GifDrawable instance with multiple Views

Normally single GifDrawable instance associated with multiple Views will animate only on the last one. To solve that create MultiCallback instance, add Views to it and set callback for given drawable, eg.:
MultiCallback multiCallback = new MultiCallback();

imageView.setImageDrawable(gifDrawable);
multiCallback.addView(imageView);

anotherImageView.setImageDrawable(gifDrawable);
multiCallback.addView(anotherImageView);

gifDrawable.setCallback(multiCallback);

Advanced

  • recycle() - provided to speed up freeing memory (like in android.graphics.Bitmap)
  • isRecycled() - checks whether drawable is recycled
  • getError() - returns last error details

Upgrading from 1.2.3

Meaningful only if consumer proguard rules (bundled with library) are not used (they are used by default by Gradle).
  • Proguard rule has changed to -keep public class pl.droidsonroids.gif.GifIOException{<init>(int, java.lang.String);}

Upgrading from 1.1.17

1.1.17 is the last version supporting API level 8 (Froyo). Starting from 1.2.0 minimum API level is 9 (Gingerbread).

Upgrading from 1.1.13

Handling of several edge cases has been changed:
  • GifDrawable#getNumberOfFrames() now returns 0 when GifDrawable is recycled
  • Information included in result of GifDrawable#toString() when GifDrawable is recycled now contains zeroes only

Upgrading from 1.1.10

It is recommended (but not required) to call LibraryLoader.initialize() before using GifDrawableContext is needed in some cases when native libraries cannot be extracted normally. See ReLinker for more details. If LibraryLoader.initialize()was not called and normal library loading fails, Context will be tried to be retrieved in fall back way which may not always work.

Upgrading from 1.1.9

int parameter loopNumber has been added to AnimationListener#onAnimationCompleted().

Upgrading from 1.1.8

Proguard configuration not needed

Proguard configuration is now bundled with the library, you don't need to specify it yourself.

Upgrading from 1.1.3

src XML attribute in GifTextureView has been renamed to gifSource to avoid possible conflicts with other libraries.

Upgrading from 1.0.x

Proguard configuration update

Proguard configuration has changed to:
-keep public class pl.droidsonroids.gif.GifIOException{<init>(int);}
-keep class pl.droidsonroids.gif.GifInfoHandle{<init>(long,int,int,int);}

Drawable recycling behavior change

GifDrawable now uses android.graphics.Bitmap as frame buffer. Trying to access pixels (including drawing) of recycled GifDrawable will cause IllegalStateException like in Bitmap.

Minimum SDK version changed

Minimum API level is now 8 (Android 2.2).

Rendering moved to background thread

Rendering is performed in background thread running independently from main thread so animation is running even if drawable is not drawn. However rendering is not running if drawable is not visible, see [#setVisible()](http://developer.android.com/reference/android/graphics/drawable/Drawable.html#setVisible(boolean, boolean)). That method can be used to control drawable visibility in cases when it is not already handled by Android framework.

References

This library uses code from GIFLib 5.1.3 and SKIA.