Tuesday, April 30, 2013

Understand lifecycle of Activity and Fragment, Introduction 2013

To develop Android Apps run on Fragment, understanding of lifecycle of Activity and Fragment is very important. (I'm confused now!)

It is a simple exercise to load Fragment using FragmentTransaction, with all lifecycle methods overrided to display the status on Toast and output to Log. Such that you can easy understand the lifecycle behavior between Activity and Fragment.

Understand lifecycle of Activity and Fragment


MainActivity.java
package com.example.androidfragmenttest;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.Toast;
import android.app.Activity;

public class MainActivity extends  FragmentActivity {
 
 static public class MyFragment1 extends Fragment {
  
  String savedText;

  @Override
  public void onAttach(Activity activity) {
   toastFragment1Method();
   super.onAttach(activity);
  }

  @Override
  public void onCreate(Bundle savedInstanceState) {
   toastFragment1Method();
   super.onCreate(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
   toastFragment1Method();
   View view = inflater.inflate(R.layout.fragment_layout1, null);
   return view;
  }
  
  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
   toastFragment1Method();
   super.onActivityCreated(savedInstanceState);
  }

  @Override
  public void onStart() {
   toastFragment1Method();
   super.onStart();
  }

  @Override
  public void onResume() {
   toastFragment1Method();
   super.onResume();
  }

  @Override
  public void onPause() {
   toastFragment1Method();
   super.onPause();
  }

  @Override
  public void onStop() {
   toastFragment1Method();
   super.onStop();
  }

  @Override
  public void onDestroyView() {
   toastFragment1Method();
   super.onDestroyView();
  }

  @Override
  public void onDestroy() {
   toastFragment1Method();
   super.onDestroy();
  }

  @Override
  public void onDetach() {
   toastFragment1Method();
   super.onDetach();
  }
  
  private void toastFragment1Method(){
   StackTraceElement[] s = Thread.currentThread().getStackTrace();
   String methodName = s[3].getMethodName();
   Toast.makeText(getActivity(), 
     "MyFragment1 : " + methodName, Toast.LENGTH_SHORT).show();
   
   Log.i("MYTAG", "MyFragment1 : " + methodName);
  }

 }
 
 FrameLayout fragmentContainer;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  toastActivityMethod();
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  fragmentContainer = (FrameLayout)findViewById(R.id.container);
  if(savedInstanceState == null){
   //if's the first time created
   MyFragment1 myListFragment1 = new MyFragment1();
   FragmentManager supportFragmentManager = getSupportFragmentManager();
   FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
   fragmentTransaction.add(R.id.container, myListFragment1);
   fragmentTransaction.commit(); 
  }
  
 }
 
 @Override
 protected void onStart() {
  toastActivityMethod();
  super.onStart();
 }

 @Override
 protected void onResume() {
  toastActivityMethod();
  super.onResume();
 }

 @Override
 protected void onPause() {
  toastActivityMethod();
  super.onPause();
 }
 
 @Override
 protected void onStop() {
  toastActivityMethod();
  super.onStop();
 }

 @Override
 protected void onDestroy() {
  toastActivityMethod();
  super.onDestroy();
 }

 private void toastActivityMethod(){
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  Toast.makeText(getApplicationContext(), 
    "MainActivity : " + methodName, Toast.LENGTH_SHORT).show();
  
  Log.i("MYTAG", "MainActivity : " + methodName);
 }

}


/res/layout/activity_main.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</RelativeLayout>


/res/layout/fragment_layout1.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Fragment 1"/>
    
</LinearLayout>




download filesDownload the files.

To view the Log in Eclipse, Show View of LogCat in Window menu; select info and enter tag:MYTAG in the search box.



Suggested Android Developers doc:
- Activity
- Fragments





Next:


Monday, April 29, 2013

new game Iron Fist Boxing v4.2.5 Apk + Data Android


IRON FIST BOXING is the original real-time 3D MMA fighting game on Android. With a totally revamped input system, a longer career mode, more game modes, and more characters than ever. Click on MORE to learn why you should get IRON FIST BOXING now !
This is it. WOW!, Kicking butt.


Today, you’ve decided to take your fighting career to a new level. Training hard for the World circuit, your arms ache as you pummel the punching bag, building the muscles, focus and technique that you’ll need to win.
Nothing and no one else exists in this moment, it’s just you and the sound of your gloves slapping the bag. You’re going to be the next champ if it kills you. And it might.

Iron Fist Boxing is the original, real-time 3D MMA fighting app. Don’t be fooled by imitations, if you want authentic, heart-racing action, incredible next generation graphics and the absolute ultimate in gaming challenge.
This application pushes the envelope, offering you six different game modes: It’s non-stop action, all the way, as you train, spar with a friend or live out your fantasy fight career.

You’ll experience high quality audio and real-time 3D graphics that have never been seen before.
Regardless of which device you’re using, the camera views are spectacular and your screen, with its easy multitouch controls, may give you an unfair advantage over your virtual opponent.

There are 32! characters for you to fight in this fast-action game. They all have MMA combat styles and are not above throwing in a few other disciplines to take you down: Boxing, Muay Thai, Savate, Kick Boxing, Brawler and Full Contact.
You’ve got your work cut out for you, if you want to claim the title, better start training now. To help you out, the app features many super moves and dodges.

Game Features:
• Experience high quality audio and real time 3D on Android 2.2 or better.
• Enjoy 6 game modes: Story mode, sparring, training and introducing the Speed Bag training, Punching Bag training and Punch-o-Meter.
• Story mode: Experience a new world career in Brazil, Canada, Thailand, and USA.
• Training mode: Train yourself for the Story mode.
• Speed bag mode: Hit a speed bag as fast as you can.
• Punching bag: Hit a punching bag in a given same sequence.
• Punch-o-Meter: Hold you iPhone / iPod and hit as hard as you can.
• Sparring mode: Fight against a random fighter.
• Play up to 32 characters with MMA combat styles and more: Boxing, Muay Thai, Savate, Kick Boxing, Brawler and Full Contact.
• Gain access to the Worldwide online score board with TOP 100 and rankings with date.
• Gain access to new costumes and new attacks.
• New camera views, characters can now move on the ring, many super moves and dodges added.


Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link


Vector [FULL] v1.0.0 Apk Android


Vector is an exciting, arcade-style game featuring you as the exceptional free runner who won’t be held down by the system. The game opens with a view into a totalitarian world where freedom and individually is nothing more than a distant dream. But the heart of a freerunner is strong, and you soon break free. Run, vault, slide and climb using extraordinary techniques based on the urban ninja sport of Parkour all while being chased by “Big Brother” who’s sole purpose is to capture you and bring you back.


Inspired by the practice and principles of Parkour, Vector’s intuitive controls please players of all levels, and sophisticated level designs challenge the most demanding players with fast-paced timing puzzles as the traceur “flows” over the dystopian rooftops.

Game Features:

- Arcade gameplay from the makers of the hit Facebook game
- Astoundingly lifelike Parkour-inspired moves made possible by Cascadeur animation tools
- 40+ challenging levels
- Quick to learn, challenging to master

The best parkour-inspired action game! Vector lets you break free and run! Don’t get caught!

The Press Loves Vector:

“The way Vector mimics the movements of real-life parkour practitioners is quite impressive... I can’t wait to be entrapped in Vector’s promising mix of direction and magnitude.” (appadvice.com)

“Vector is thrilling, rich in variety and it reminds us of Stick Run, but offers much more elaborate animations.” (fbgamer.de)

"The only cool way to run from all your problems." (Gamezebo.com)

“The game looks smashing … ” (idroidplay.com)

Check out what players are saying about Vector:

“Awesome!”, “Wow! Perfect Game, Man”, “Greatest game I ever ‘ran’!!!”, “Woohoo! 5 stars!”

Click Here To Download
Direct Download Link - Direct Download Link


The New Digital Age: Reshaping the Future of People, Nations and Business


In an unparalleled collaboration, two leading global thinkers in technology and foreign affairs give us their widely anticipated, transformational vision of the future: a world where everyone is connected—a world full of challenges and benefits that are ours to meet and to harness.

Eric Schmidt is one of Silicon Valley’s great leaders, having taken Google from a small startup to one of the world’s most influential companies. Jared Cohen is the director of Google Ideas and a former adviser to secretaries of state Condoleezza Rice and Hillary Clinton. With their combined knowledge and experiences, the authors are uniquely positioned to take on some of the toughest questions about our future: Who will be more powerful in the future, the citizen or the state? Will technology make terrorism easier or harder to carry out? What is the relationship between privacy and security, and how much will we have to give up to be part of the new digital age?

In this groundbreaking book, Schmidt and Cohen combine observation and insight to outline the promise and peril awaiting us in the coming decades. At once pragmatic and inspirational, this is a forward-thinking account of where our world is headed and what this means for people, states and businesses.

With the confidence and clarity of visionaries, Schmidt and Cohen illustrate just how much we have to look forward to—and beware of—as the greatest information and technology revolution in human history continues to evolve. On individual, community and state levels, across every geographical and socioeconomic spectrum, they reveal the dramatic developments—good and bad—that will transform both our everyday lives and our understanding of self and society, as technology advances and our virtual identities become more and more fundamentally real.

As Schmidt and Cohen’s nuanced vision of the near future unfolds, an urban professional takes his driverless car to work, attends meetings via hologram and dispenses housekeeping robots by voice; a Congolese fisherwoman uses her smart phone to monitor market demand and coordinate sales (saving on costly refrigeration and preventing overfishing); the potential arises for “virtual statehood” and “Internet asylum” to liberate political dissidents and oppressed minorities, but also for tech-savvy autocracies (and perhaps democracies) to exploit their citizens’ mobile devices for ever more ubiquitous surveillance. Along the way, we meet a cadre of international figures—including Julian Assange—who explain their own visions of our technology-saturated future.

Inspiring, provocative and absorbing, The New Digital Age is a brilliant analysis of how our hyper-connected world will soon look, from two of our most prescient and informed public thinkers.

Sunday, April 28, 2013

Simulate kill activity to test onSaveInstanceState() / onCreate()

In order to test the lifecycle behaviour of our apps, we always have to leave our apps to move it to background, wait sometime for the system to kill it...and restart it.

It's a alternative to simulate "kill activity" by the Immediately destroy activities (or called Don't keep activities/Do not keep activities) selection Development Settings:

Select Developer options in Setting
Select Developer options in Setting

Select Advanced

Check Don't keep activities


According to the Android Developer document of Using the Dev Tools App:

Immediately destroy activities
Tells the system to destroy an activity as soon as it is stopped (as if Android had to reclaim memory). This is very useful for testing the onSaveInstanceState(Bundle) / onCreate(android.os.Bundle) code path, which would otherwise be difficult to force. Choosing this option will probably reveal a number of problems in your application due to not saving state. For more information about saving an activity's state, see the Activities document.


Notice: This setting for developers only, NOT for general user.



Related: The lifecycle in Activity Killed

Poweramp Music Player v2.0.9 [FULL] Apk Android


Powerful Music Player for Android
Poweramp is a powerful music player for Android.

Key Features:
- plays mp3, mp4/m4a (including alac), ogg, wma*, flac, wav, ape, wv, tta, mpc, aiff (* some wma pro files may require NEON support)


- 10 band optimized graphical equalizer for all supported formats, presets, custom presets
- separate powerful Bass and Treble adjustment
- stereo eXpansion, mono mixing, balance
- crossfade
- gapless
- replay gain
- plays songs from folders and from own library
- dynamic queue
- lyrics support, including lyrics search via musiXmatch plugin
- embed and standalone .cue files support
- support for m3u, m3u8, pls, wpl playlists
- OpenGL based cover art animation
- downloads missing album art
- 4 configurable widget types
- configurable lock screen with optional Direct Unlock
- headset support, automatic Resume on headset and/or BT connection (can be disabled in settings)
- scrobbling
- tag editor
- visual themes, including support for external/3rd party skins
- fast library scan
- high level of customization via settings

====
Full Changelog for 2.0.6-build-508

- fixed issue with HTC Sensation XL @ ICS
- smoother post-notification resume
- some bluetooth track info support (where supported by device/stock player – Motorolas and Samsungs). Optional album/artist can be included into title for title-displaying-only BT devices (Settings/Misc/Tweaks)
- polished widgets for various devices/ROMs
- stability improvements
- improved notification controls
- added HTC Sound Enhancement support (HTC FX @ Tone/Vol screen, doesn't work on HTC One X)
- German (thanks to Vincent T.)
- Italian (thanks to Luigiantonio Calò)
- Spanish (thanks to Luis Gallón, Jose Martin)
- Chinese Traditional (thanks to Jane Zhang, KaiChing Chang)
- HTC One X support
- Meizu MX support
- support for Dolby effect on HTC DHD
- settings revamp
- action bars support for Honeycomb/ICS
- additional action bars options for ICS
- improved build-in skins for tablets
- background folders scan
- additional scanning options
- added workaround for rare Samsung CPU related crash
- few other bug fixes and improvements


1.) Install PowerAMP.apk from market or from here [Don't Run]
2.) Install PowerAMP Unlocker.apk: from here [Don't Run]
3.) Install Lucky Patcher [Don't Run]
4.) Run PowerAMP unlocker app click start poweramp
5.) Exit PowerAMP
6.) Go to Apps -> PowerAMP -> Click Force stop (Don't click Clear data)
7.) Run Lucky Patcher and run the custom patch ( patch.by.sanx_com.maxmpz.audioplayer) on PowerAMP
8.) Run PowerAMP v2.0.9 and it should work fine now. (You can check by going to Settings -> About - You shouldn't see that upsidedown orange triangle anywhere about the license being invalid)

* If not full, please patch again and reboot.


Click Here To Download

APK File + Unlocker APK
Direct Download Link - Direct Download Link

Widgets & Skins Pack
Direct Download Link - Direct Download Link


ASTRO File Manager / Browser Pro v4.3.487 Apk Android


ASTRO helps organize & view your pictures, music, video, document & other files.
ASTRO File Manager has 30 million downloads on the Android Market and 250,000 reviews!
It's like Windows Explorer or Mac’s Finder for your phone or tablet and allows you to easily browse and organize all of your pictures, music, videos and documents. It also gives you the ability to stop processes that burn battery life and backup your apps in case you lose or change phones.


Personalize the look of ASTRO by downloading different colored icon sets using our "theme" feature!

It’s picture view works better than standard galleries and ASTRO is in dozens of Top Ten Android App lists and has been recommended in books. DOWNLOAD NOW.

Features include: file management, android file browser, file and/or app backup, image and text viewers, networking, Bluetooth, SFTP, Zip/ Tar, downloader, thumbnails, search files, application manager, task manager, attachments and more…

Recent Changes:
*** We've added Themes to ASTRO ***
Download Android's most popular file manager and choose from many icon sets and colors including v2's "Classic" ASTRO look and feel.

- Fixed the Force Close happening on upgrade from 2.5 to 3.0
- Fixed App Backup issues
- Honeycomb support
- New UI and icon set (more options for colors and icon set in next releases)
- Drag and Drop files
- Analytics: ASTRO users, we are gathering non-personal analytics (such as what functions are used the most) in order to better understand user behavior. We will use this so we can focus our development efforts in areas that our customers use often rather than functions that are not. If you do not want analytics, in the Pro Version you can turn analytics off.
- A few more bug fixes and stability fixes

ASTRO currently supports 11 languages including: English, French, Spanish, Italian, German, Japanese, Korean, Traditional Chinese, Simplified Chinese, Russian & Portuguese.

Click Here To Download
Direct Download Link | Direct Download Link 


Avengers Initiative v1.0.4 Apk Android


Download the first installment of Marvel's biggest cross﹐ver mobile gaming event... Level up, gear up, and fight as Hulk in the first adventure of an episodic series built exclusively for touch screen devices. Track down and defeat some of the world's most notorious villains like Wendigo, Abomination, The Kronan, and The Skrulls, and help THE AVENGERS pull the world back from the brink of catastrophe. Marvel’s Avengers Initiative, an episodic mobile gaming event unlike any other.


In the wake of The Pulse, The Vault, a top﹕ecret S.H.I.E.L.D. facility in the Rocky Mountains, has busted open, releasing all of the super﹑owered criminals and monsters imprisoned there. Aboard the S.H.I.E.L.D. Helicarrier, Nick Fury recruits a reluctant HULK to round up all the monsters he can while S.H.I.E.L.D. can assemble the rest of THE AVENGERS to figure out who opened the doors to The Vault� and why.

VISCERAL COMBAT
Experience raw, SUPER㏄OWERED COMBAT with blazingly responsive swipe, attack, and combo controls in a complete gesture based action game.

STUNNING HD VISUALS
Battle huge BOSS㏒IZED enemies amazing special effects, and incredible set pieces.

UNIQUE CUSTOMIZATION
FULLY CUSTOMIZE Hulk to play the way you want to play. Acquire exclusive costumes, unlock incredible super﹑owered abilities, discover explosive augmentations, and upgrade all of Hulk's combat stats.

EPISODIC CONTENT
Marvel's CROSS㎡VER MOBILE GAMING EVENT continues with updates, scheduled events, and anticipated character reveals, setting a new standard for mobile gaming.

MARVEL XP
Now featured in Avengers Initiative and newly optimized for touch screen devices, Marvel XP is a FREE LIVE SERVICE that TRACKS YOUR PROGRESS, REWARDS YOUR ACHIEVEMENTS, and helps you experience Marvel on a whole new level across multiple games, including Avengers Alliance on Facebook. REGISTER NOW and unlock achievement badges, character dossiers, and other bonus content exclusive to the Marvel XP community.

ENHANCED FOR NVIDIA TEGRA DEVICES
If you’re the owner of an NVIDIA Tegra Super Phone or Tablet, experience added TegraZone game enhancements including: Improved character textures, realistic clothing, life-like environments, and Iso-8 effects.

AVAILABLE NOW FOR THE FOLLOWING ANDROID DEVICES

*** MARVEL ANNOUNCES DEBUT OF AVENGERS INITIATIVE FOR SELECT ANDROID DEVICES WITH $4.99 PROMOTIONAL PRICE ***

HTC One X
HTC Evo 4g
HTC Incredible 4g
LG G2x
LG Nitro HD
Motorola Droid 3
Motorola Atrix 4g
Motorola Photon Q 4g
Samsung Galaxy Nexus
Samsung Galaxy SII
Samsung Galaxy SIII
Samsung Galaxy Note
Samsung Galaxy Tab 7.7
Asus Nexus 7
Asus Transformer Prime
Asus Transformer

Install APK
Copy 'com.disney.avengers_goo' folder to 'sdcard/Android/obb'
Launch the Game


Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link


ssLauncher The Original v1.11.1 Apk Android


More freedom to your device!
'ssLauncher the Original' is implementing all features of ssLauncher(free version). Additionally, this includes more features, some of which will be applied to the free version with approximately monthly intervals.


* Features
- all of ssLauncher
- no ads
- copy & paste of shortcuts
- crop icons and images
- additional page transition animations
- supports formatted text for missed calls and unread SMS/MMS messages (*)
- additional shortcut styles (*)
- set background images for each pages (*)


What's in this version:
v1.5.11
fixed battery drain occuring on ICS
fixed an error caused by selecting target of bookmark shortcut when no bookmark page exists
fixed generating white site preview sometimes
fixed partially drawing error when unlocked
fixed some bugs and optimized

Click Here To Download
Direct Download Link | Direct Download Link


HD Widgets v3.9.5 Apk Android


HD Widgets are the next generation of widgets - something fun and amazing designed for today's high resolution touch screens.
HD Widgets includes a dozen beautiful widgets that show current time, current weather, weather forecast, and utility switches. We put a TON of time into designing each widget to look great on every Android screen.


The best part of HD Widgets is how fun and easy it is to use. Everything in the WYSIWYG app is right at your fingertips. make changes and see the results instantly right on your wallpaper background. You can mix and match various clocks (LED, flip clock, and Honeycomb) with backgrounds, layouts, and other options. Simple!

Widget Features
- over 100 amazing, beautiful widgets for all device types
- organized by sizes
- clock, date, location, weather, forecast, & utility switches
- LED, flip clock, & Honeycomb clock designs
- vivid colorful backgrounds
- large made-for-tablet widgets
- hot spots for alarm clock, calendar, & weather
- phone widgets: 1x1, 2x1, 2x2, 4x1, 4x2, 4x3, 4x4 (& 5x sizes for the Galaxy Note)
- tablet widgets: all phone sizes plus 8x1, 8x2, 4x7, 6x1, 6x2, & 3x5
App Features
- User Guide to help you get started
- fullscreen weather activity
- multiple locations and weather services
- fun & unique WYSIWYG design
- quick and easy editing
- widget & theme previews
Options
- AccuWeather, WeatherBug & Weather Underground
- 12 / 24 hr clock
- F / C temperature

Recently Added:
- moar widgets
- massively vivid easier-to-use app UI
- WYSIWYG widget previews
- new clock widgets
- customizable switches
- more weather services
- local date & time in weather screen
- multi-location weather screen
- choose weather hotspot link
- device specific User Guide
- show/hide widgets in the main menu
- more switches
- even more colors & clocks
- built for new themes & add-ons
- ICS native (built on sdk 16)

Click Here To Download
Direct Download Link - Direct Download Link


Saturday, April 27, 2013

Embed WebView in Fragment

This exercise embed WebView in Fragment.

Embed WebView in Fragment


package com.example.androidwebviewfragment;

import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

static public class MyWebViewFragment extends Fragment {

WebView myWebView;
final static String myBlogAddr = "http://android-er.blogspot.com";
String myUrl;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_webfragment, container, false);
myWebView = (WebView)view.findViewById(R.id.mywebview);

myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setWebViewClient(new MyWebViewClient());

if(myUrl == null){
myUrl = myBlogAddr;
}
myWebView.loadUrl(myUrl);

return view;

}

private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
myUrl = url;
view.loadUrl(url);
return true;
}
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
}

}

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

@Override
public void onBackPressed() {
MyWebViewFragment fragment =
(MyWebViewFragment)getFragmentManager().findFragmentById(R.id.myweb_fragment);
WebView webView = fragment.myWebView;

if(webView.canGoBack()){
webView.goBack();
}else{
super.onBackPressed();
}
}

}


Layout, activity_main.xml.
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<fragment
android:name="com.example.androidwebviewfragment.MainActivity$MyWebViewFragment"
android:id="@+id/myweb_fragment"
android:layout_height="match_parent"
android:layout_width="match_parent" />

</RelativeLayout>


Layout of our fragment, layout_webfragment.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="vertical" >

<WebView
android:id="@+id/mywebview"
android:layout_height="match_parent"
android:layout_width="match_parent" />

</LinearLayout>


Permission of "android.permission.INTERNET" is need.

- I can't implement using WebViewFragment, so this exercise extends Fragment, not WebViewFragment.
- In this implement, the WebView can load the last loaded address after orientation changed, but cannot keep the navigation history.

download filesDownload the files.

Beat the Boss 2 v1.512 Apk Android


The Boss is back and ready to make your life a living hell. But you're not the same good guy taking orders anymore. You've been granted the power to take sweet vengeance on this tyrannical boss. Backed by an arsenal of dangerous weapons, kick the boss with magical forces, lethal guns and deadly blades. Let him PAY THE PRICE of messing with the wrong guy.


Kick the Boss 2 is the highly anticipated sequel to the original title. With 16 million downloads to date; it strives to better what made the first one a hit in every possible way. The simple controls remain the same but it offers new art, weapons, stages, sound effects, and enhanced gameplay. This is not a good game; it’s a freaking awesome one! Why?

✪ Laugh your butt off funny: These aren't jokes for your grandma.
✪ Physics Simulated: Get a satisfying reaction to all your intense beating
✪ Premium Weapons: 80+ all new skull cracking, bone breaking, nerve-racking weapons.
✪ New Town Map: 7 interactive stages, each with their own bosses and secrets to discover.
✪ New way to play: Funny player objectives and premium rewards.

Click Here To Download
Direct Download Link - Direct Download Link


House of the Dead Overkill: LR v1.28 Apk Android


You thought it was over… but we've found the Lost Reels.

Join the original cast and blast your way through remixed worlds from The House of the Dead Overkill™. Play in Survival or Story Mode and mow down waves of infected, blood-thirsty mutants in this b-style arcade shooter.


DISCOVER THE LOST REELS
▪ Experience 3 goregasmic worlds full of carnage in Story Mode. In Papa’s Palace of Pain, Ballistic Trauma, and Naked Terror, you’ll be screaming ‘til your last breath.

DISMEMBER UTTERLY DISGUSTING MUTANTS
▪ Enjoy non-stop shooting action as you blow apart mutants for high-score thrills. See how long you can hold off the swarms of undead in Survival Mode.

REJOIN THE ORIGINAL CAST
▪ Isaac Washington: a hard-drinking ladies’ man who deals damage in droves.
▪ Agent G: an inexperienced but deadly assassin who keeps a steady hand under pressure.
▪ Varla Guns: the hottest stripper on the Bayou City club scene who enjoys the largest clip.
▪ Candi Stryper: an expert with her hands who knows how to reload.

FINGERBLAST ON THE GO
▪ Obliterate mutants with one of three control mechanisms optimized for your mobile device – Accelerometer, Virtual Pad and Frenzy Tap (unlockable)

UPGRADE YOUR ARSENAL
▪ Destroy mutants to earn Ka$h, the in-game currency, and upgrade your pistol to something that really blasts through flesh.
▪ Enhance your killing prowess with combo extenders, reload boosters, and other game-changing upgrades.

Data Location: SDcard/Android/Obb

Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link


Friday, April 26, 2013

Implement animation in FragmentTransaction

setCustomAnimations(int enter, int exit, int popEnter, int popExit) and setCustomAnimations(int enter, int exit) methods of FragmentTransaction class set specific animation resources to run for the fragments that are entering and exiting in this transaction. The popEnter and popExit animations will be played for enter/exit operations specifically when popping the back stack.

Example Code:

    FragmentTransaction fragmentTransaction =
getActivity().getFragmentManager().beginTransaction();

fragmentTransaction.setCustomAnimations(
R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout);

fragmentTransaction.replace(R.id.phone_container, myDetailFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();


animation in FragmentTransaction


Further work on previous exercise "implements OnBackStackChangedListener to display UP icon, automatically by getBackStackEntryCount()".

Create /res/anim/fadein.xml.
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:propertyName="alpha"
android:valueFrom="0.0"
android:valueTo="1"
android:duration="500"
/>


/res/anim/fadeout.xml.
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:propertyName="alpha"
android:valueFrom="1"
android:valueTo="0.0"
android:duration="500"
/>


MainActivity.java
package com.example.androiddualmode;

import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager.OnBackStackChangedListener;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnBackStackChangedListener{

// if run on phone, isSinglePane = true
// if run on tablet, isSinglePane = false
static boolean isSinglePane;

static String[] month ={
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"};

public static class MyListFragment extends ListFragment {

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);

ListAdapter myArrayAdapter =
new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_list_item_1, month);
setListAdapter(myArrayAdapter);

}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {

String clickedDetail = (String)l.getItemAtPosition(position);

if(isSinglePane == true){
/*
* The second fragment not yet loaded.
* Load MyDetailFragment by FragmentTransaction, and pass
* data from current fragment to second fragment via bundle.
*/
MyDetailFragment myDetailFragment = new MyDetailFragment();
Bundle bundle = new Bundle();
bundle.putString("KEY_DETAIL", clickedDetail);
myDetailFragment.setArguments(bundle);
FragmentTransaction fragmentTransaction =
getActivity().getFragmentManager().beginTransaction();

fragmentTransaction.setCustomAnimations(
R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout);

fragmentTransaction.replace(R.id.phone_container, myDetailFragment);

/*
* Add this transaction to the back stack.
* This means that the transaction will be remembered after it is
* committed, and will reverse its operation when later popped off
* the stack.
*/
fragmentTransaction.addToBackStack(null);

fragmentTransaction.commit();

}else{
/*
* Activity have two fragments. Pass data between fragments
* via reference to fragment
*/

//get reference to MyDetailFragment
MyDetailFragment myDetailFragment =
(MyDetailFragment)getFragmentManager().findFragmentById(R.id.detail_fragment);
myDetailFragment.updateDetail(clickedDetail);

}
}

}

public static class MyDetailFragment extends Fragment {

TextView textDetail;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.layout_detailfragment, null);
textDetail = (TextView)view.findViewById(R.id.text_detail);

Bundle bundle = getArguments();
if(bundle != null){
String detail = bundle.getString("KEY_DETAIL", "no argument pass");
textDetail.setText(detail);
}

return view;
}

public void updateDetail(String detail) {
textDetail.setText(detail);
}

}

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

View v = findViewById(R.id.phone_container);
if(v == null){
//it's run on tablet
isSinglePane = false;
/*
* MyListFragment and MyDetailFragment have been loaded in XML,
* no need load.
*/

}else{
//it's run on phone
//Load MyListFragment programmatically
isSinglePane = true;

if(savedInstanceState == null){
//if's the first time created
MyListFragment myListFragment = new MyListFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();

fragmentTransaction.add(R.id.phone_container, myListFragment);
fragmentTransaction.commit();
}
}

getFragmentManager().addOnBackStackChangedListener(this);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getFragmentManager().popBackStack();
return true;
}

return super.onOptionsItemSelected(item);
}

final static String KEY_DISPLAY_OPT = "KEY_Display_Option";

@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putInt(KEY_DISPLAY_OPT, getActionBar().getDisplayOptions());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
int savedDisplayOpt = savedInstanceState.getInt(KEY_DISPLAY_OPT);
if(savedDisplayOpt != 0){
getActionBar().setDisplayOptions(savedDisplayOpt);
}
}

@Override
public void onBackStackChanged() {
int backStackEntryCount = getFragmentManager().getBackStackEntryCount();
if(backStackEntryCount > 0){
getActionBar().setDisplayHomeAsUpEnabled(true);
}else{
getActionBar().setDisplayHomeAsUpEnabled(false);
}
}

}


download filesDownload the files.

Google Play content policies have been updated




Google Play content policies have been updated. See "Content Policies" section of Google Play Developer Program Policies, which clarifies that "An app downloaded from Google Play may not modify, replace or update its own APK binary code using any method other than Google Play's update mechanism." Google Play is a trusted source for Android application downloads, and we are committed to providing a secure and consistent experience.

Thursday, April 25, 2013

Tablet Optimization Tips in the Google Play Developer Console

Posted by Ellie Powers, Google Play team




Last week we updated our guidelines for making great tablet apps and added the ability to upload tablet screenshots that are shown preferentially in Google Play to users on those devices. Today we’re introducing a new Optimization Tips page in the Google Play Developer Console that lets you quickly see how your app is doing against basic guidelines for tablet app distribution and quality.



When you upload an app, the Developer Console now runs a series of checks to verify basic criteria from the Tablet App Quality Checklist and shows you any issues it finds in the Optimization Tips page.



style="border:1px solid #ddd;border-radius: 6px;"src="http://1.bp.blogspot.com/-w0gl8ttJFFo/UXgQDbepnuI/AAAAAAAACGE/nTanLxr3C7A/s1600/opt-tips-crop-720.png" />

If you’re developing for tablets, make sure to visit your Optimization Tips page to ensure that your app is delivering a great tablet experience. If there are any issues listed, we recommend addressing them in your app as soon as possible and uploading a new binary for distribution, if needed.



For ideas on how to design and build a great tablet app, including details on how to address issues listed in your Optimization Tips page, check out the Tablet App Quality Checklist. Remember that a great tablet experience goes well beyond these basic checks. Keep working to bring your tablet users the most polished UI and richest content possible.



Start Animation in Activity start

Last exercise show how to "Implement Animation while switching Activity, using overridePendingTransition()", after startActivity() or finish(). If you want run animation when your activity start, you can startAnimation() with your custom Animation in onCreate() or onResume() depends on what you expect.


Modify from last exercise.

Create /res/anim/rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
android:startOffset="0"
android:repeatCount="1"
android:repeatMode="reverse" />
</set>


Modify activity_main.xml to add more view to animate.
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:id="@+id/screen"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/switchbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Switch Activity2" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/bigicon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" />

</LinearLayout>


MainActivity.java
package com.example.androidactivityanimation;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

LinearLayout screen;
Button switchButton;
ImageView bigIcon;
ImageView icon;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

screen = (LinearLayout)findViewById(R.id.screen);
bigIcon = (ImageView)findViewById(R.id.bigicon);
icon = (ImageView)findViewById(R.id.icon);

switchButton = (Button)findViewById(R.id.switchbutton);
switchButton.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, Activity2.class);
startActivity(intent);
overridePendingTransition(R.anim.right_in, R.anim.left_out);
}});

Animation animRightIn = AnimationUtils.loadAnimation(this, R.anim.right_in);
Animation animRotateIn_icon = AnimationUtils.loadAnimation(this, R.anim.rotate);

screen.startAnimation(animRightIn);
icon.startAnimation(animRotateIn_icon);
}

@Override
protected void onResume() {
super.onResume();
Animation animRotateIn_big = AnimationUtils.loadAnimation(this, R.anim.rotate);
bigIcon.startAnimation(animRotateIn_big);
}

}



download filesDownload the files.

Custom Animation while switching Activity, using overridePendingTransition()

Call overridePendingTransition(int enterAnim, int exitAnim) immediately after startActivity(Intent) or finish() to specify an explicit transition animation to perform next.


Create animation XMLs in /res/anim/ folder.

/res/anim/left_out.xml
<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="500"/>
</set>


/res/anim/right_in.xml
<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="500"/>
</set>


/res/anim/top_out.xml
<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromYDelta="0"
android:toYDelta="-100%p"
android:duration="500"/>
</set>


/res/anim/bottom_in.xml
<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromYDelta="100%p"
android:toYDelta="0"
android:duration="500"/>
</set>


MainActivity.java
package com.example.androidactivityanimation;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

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

Button switchButton = (Button)findViewById(R.id.switchbutton);
switchButton.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, Activity2.class);
startActivity(intent);
overridePendingTransition(R.anim.right_in, R.anim.left_out);
}});
}

}


/res/layout/activity_main.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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/switchbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Switch Activity2" />


</LinearLayout>


Activity2.java
package com.example.androidactivityanimation;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Activity2 extends Activity {

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

Button backButton = (Button)findViewById(R.id.backbutton);
backButton.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
finish();
overridePendingTransition(R.anim.bottom_in, R.anim.top_out);
}});
}

}


/res/layout/layout2.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Activity2" >

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"/>
<Button
android:id="@+id/backbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back" />

</RelativeLayout>


AndroidManifest.xml have to be modified to add <activity> of Activity2.

download filesDownload the files.

Related:
- Start Animation in Activity start

Wednesday, April 24, 2013

Bike Race Pro by T. F. Games v2.4 Apk Android


This version of Bike Race has:
- All levels unlocked!
- No Ads!

In this simple and fast-paced physics-based free game, tilt your device to lean your bike and touch the screen to accelerate/brake.


Features:
- Multiplayer
- Simple controls
- 12 addictive worlds
- 96 challenging tracks
- 13 amazing bikes
- Touch to accelerate, tilt to lean the bike
- Cool stunts

Bike Race is brought to you by Top Free Games - the creators of the #1 game in the google play store, Racing Penguin.

Multiplayer Mode is available! Try to become the best biker on Android!

A few words from our fans:
"This is the funnest bike game in the history of bike games"

"This game was so much fun I lost my job and my wife left me. I sure
hope they will reimburse me for my life."

"Fantabulous"

"Hide this one from the kids, you're gonna want to spend some quality
time playing this one yourself!"

"This game changed my life"

"I have had this game for a couple months very good game constant
level updates love it thanks."

"If it where a 10$ game i would buy it"

"I can play it everyday for the rest of my life"

"Great 2 player. Similar to words with friends but so much better!"

"Bike Race is the best game I have ever played in my life."

"Fun fun fun!!! Best motorcycle game in the world"

"I don't know if it is a kids game, but I play more than my kids! Really cool game"

Bike Race.

Click Here To Download
Direct Download Link - Direct Download Link


Resident Evil 4 v1.00.00 Apk + Data Android



Experience one of the most thrilling chapters of the Resident saga in an all new way. Engage in running gun fights against crowds of enemies utilizing Resident Evil 4’s intuitive tap interface. Face an enemy quicker, smarter and scarier than any zombie and put your skills to the ultimate test.


It has been six years since the destruction of Raccoon City. Leon S. Kennedy, formerly Raccoon City Police Department’s idealistic rookie cop, is now a U.S. agent with a top-secret mission to rescue Ashley Graham, the President’s daughter. Leon begins his investigation in an undisclosed Spanish-speaking village in Europe, where he encounters a horde of unruly villagers who pledge their lives to Los Illuminados, the cult that perpetrated Ashley’s kidnapping. As Leon encounters unimaginable horrors, he must find out who or what is behind everything.

Features:
-"behind the camera" allows intuitive operation
perspective can play closer to the character than, born with an overwhelming presence, intuitive behavior possible in movement and combat.

-"Sniping" aim with pinpoint target
attack, intuitive operation of a simple point in the virtual pad on the screen aiming the firearm.
You can reload and shake the terminal.

-"Action icon" Deploying a variety of one-button
deployment by touching the "Action" icon, and make a ladder, jumping from heights, kicking the enemy, various actions depending on the situation.

-Game 
"Special Items" help the people do not like
prepared items that have, such as "five times the amount to be taken from the enemy," "double power" gun "Automatic Recovery stamina" player, features strong support five types of all.

-Story mode
Leon was rescued at the request of the president's daughter, Ashley.
To confront the zombie missions!

-Mercenary mode
in the provision of equipment, mini game of scoring to defeat many enemies within the time limit.
(Proceed with the "story mode", a new mission of "Mercenary Mode" will be added.)

Notes:

Since it will be compatible Android OS 4.0, please note.
In order to download this app, you will need approximately 40MB of main memory capacity.
when you play the first time, I downloaded the game data separately.
It is therefore necessary to have 100MB of free space or main memory (SD card) external memory.
capacity for communication, we recommend the operation of the communication environment in Wi-Fi.

Data Location: SDcard/Android/Obb

Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link


Windows Phone Notifications + 4.8 Apk Android


WP Notifications displays your device's notifications like a WP phone.
With WP Notifications you can greatly improve the way your device displays notifications, with a Windows Phone look.


The service :
* To work properly, WP Notifications requires that you activate the accessibility service "WP Notifications" (accessibility services are currently the only way to process user notifications on the Android OS).
* You then have to use the "Monitoring" section to choose which apps should raise notifications, and how.
* Status bar notifications must be enabled in the monitored apps for the banners to appear properly.

How to use it :
* Click on the notification to launch it
* Swipe it to the right to dismiss it
* Swipe to the left to clear all upcoming notifications from the same app/contact

Important information :
* Note that dismissing the notification won’t remove it from the status bar (the Android OS doesn’t currently allow to manually remove 3rd party apps notifications from the status bar).
* If you use a custom lockscreen app such as MagicLocker or WidgetLocker, or if you use the stock Android 4 ICS lockscreen, banners will show above your lockscreen.
* As a default, notifications will be enabled for SMS, MMS, missed calls, GMail, Talk, WhatsApp, Facebook, Twitter, Skype, etc...
* WP Notifications will notify you even if you're in a fullscreen app

Plus version :
* You can set individual parameters for each app
* You can set a custom ringtone for each app
* You can choose the color for the notification
* You can choose the text color for the notification
* You can disable notifications during a call
* You can choose the action when you do a left or right swipe on the banner
* You can disable clicks
* You can hide the icon
* You can set custom vibration patterns
* You can display a shadow below (or above) the banner
* You can set quiet hours
* You can use reminders
* You can use privacy options
* You can display the contact picture for any app (experimental)

Click Here To Download
Direct Download Link - Direct Download Link


Trainz Simulator v1.3.7 Apk Android


Build and operate the railroad of your dreams. We are pleased to give each and every Android tablet user the opportunity to have Trainz at your fingertips. With Trainz custom built input system to get the most out of the touch functionality you’ll find driving Trains, laying tracks, creating layouts and completing scheduled tasks a breeze. Trainz Simulator THD is packed full of content, routes and sessions to give you the best Train experience on any mobile platform. Trainz Simulator THD is a world first for Android!


Trainz Simulator includes everything you need to build and operate your own dream railroad. You can build a fun layout in minutes, faithfully recreate a railroad from days gone by or develop a fully fledged prototypical route; the choice is yours.

• Touch input makes driving Trains, laying tracks, creating layouts and completing scheduled tasks a breeze.
• More Accessible! Take Trainz with you anytime, anywhere.
• Drive Loads of Trains.
• Operate a complete working rail line.
• Build and customize your own living railroad using our advanced route creation tool called “Surveyor”.
• Trainz Simulator THD offers advance visual effects such as lighting, weather effects, fog, higher detail Trains, beautiful water, increase performance and 2 new routes with all new sessions.

Previous Upgrades
*********************************
IMPROVED
- List scrolling functionality
- Accuracy for touch interface in Surveyor.
- Free Roaming View camera panning
- Save Session display the time of save.
- Scroll around Map View while in driver mode.
- Display hint windows in various parts of the game.
- Camera control toggled on/off.
- Thumbstick 'navigation' controls.

FIXED
- Camera Options for Tutorial 2.
- Sander icon displays correctly.
- Merging routes.
- Rail Yard sleep state.
- Sound burst before a session resumed or reloaded.

Click Here To Download
Direct Download Link - Direct Download Link


Anatomy 3D Pro - Anatronica v2.07 Apk Android


A 3D educational guide to the human anatomy featuring an advanced interactive 3D touch interface. Wikipedia and Grays anatomy info available.


★ Best 3D Anatomy Application for Android ads free with more then skeletal and muscular systems!

★ Easy to navigate and explore human body (skeletal and muscular system in free version)
★ Fast search function
★ High detail 3D model
★ Test your knowledge with quiz
★ Details about every object from wikipedia
★ Frequent updates!
★ Available for android phones and tablets

Click Here To Download
Direct Download Link - Direct Download Link


Runtastic PRO v3.6.5 Apk Android


Your personal tracking app for running, biking and other sports activities! Take your fitness to a new level with runtastic.
runtastic uses GPS to map your fitness activities - running, biking, walking - and track your progress (distance, speed, calories, and more). Be part of a global fitness community that is both fun and motivational.


PRO features:
* Voice feedback during a workout: Get audio feedback for each mile or kilometer
* Live tracking: Show your friends and family where you are
* Cheering: Hear cheers and receive messages live from your friends and be motivated to go even further
* Auto pause: Session is paused automatically when you stop movement (e.g. at a red light or tying your shoe). Works for running, biking, skating, cross-country skiing and handbiking.
* runtastic Earth View: Watch your workouts in 3D, including mountains, monuments and buildings (free Google Earth App required)
* Heart rate support: runtastic chest strap
* Heart rate zone training and analysis: Choose a heart rate zone to monitor and optimize your training (i.e. fat-burning zone)
* Split table with dynamic mile and kilometer split
* Calorie goal: Set a specific calorie goal and use the voice feedback to reach your workout goal
* Pace goal: Define your favorite pace
* Geotagging: Take pictures during a workout and see these pictures online at your map trace
* Weather and Temperature: Receive live weather information and save weather data automatically after a workout
* Prediction of sunset and sunrise
* Ad free
Features:
* Map your workouts in real-time with built-in GPS and monitor your progress (time, distance, speed, pace, calories, altitude, etc.)
* Personal workout diary and metrics
* Mapping: Detailed live mapping and historic mapping of previous sessions (Google maps)
* Dashboard configuration: Display preferred statistics
* Graphs: Get charts with altitude, pace, speed and heart rate information
* Performance analysis with lap times
* Enjoy your workouts with the integrated music player
* Set goals for time and distance
* Accurate calculation of elevation gain and loss
* Manual entry of workouts: Add treadmill, spinning and weight lifting workouts
* Monthly and overall metrics for distance, number of workouts, duration and calories
* Share your activities on Google+, Facebook and Twitter

You can save all your workouts at runtastic.com. Using the online community you’ll get further analysis, metrics and comparisons to your friends. Additionally, you can choose a training plan and track your body statistics.

Lucky Pather needed to Remove Verification

Click Here To Download
Direct Download Link - Direct Download Link


WWF Rhino Raid v1.0.1 Apk Android


It's about the most Rad-ical rhino to run across your screen - ever!
And he's on a mission for good - to save the rhinos of Southern Africa. Brought to you by the World Wide Fund for Nature (WWF) South Africa. Play now and save the rhinos.


Rad keeps up a running charge against poachers and their arsenal of weapons. With the help of his trusted ally, Horn Bill, Rad has to dodge the flying hand grenades and automatic rifle fire; jump over exploding barrels... then thump the poachers as you chase after their getaway trucks and get one charge closer to Mr Big, kingpin behind the international rhino poaching syndicates.

Rad's adventure across the African savannah is punctuated by WWF's key insights into facts about rhinos and the truth behind the rhino poaching scourge. Rhino Raid aims to create awareness of WWF's rhino conservation projects in South Africa. It's fun, it's for good ...and it's RAD!


HIGHLIGHTS:
- Educational content
- 9 Levels + 3 Boss battles
- 3 Comic strips
- Easy to learn one-touch gameplay
- Jump to catch Horn Bill for a power-up
- Share on Facebook and Twitter
- WWF link to rhino information and donation

Click Here To Download
Direct Download Link - Direct Download Link


implements OnBackStackChangedListener to display UP icon, automatically by getBackStackEntryCount()

Last exercise handle UP icon for Fragment navigation in hard code; call setDisplayHomeAsUpEnabled(true) when switch to MyDetailFragment, and call setDisplayHomeAsUpEnabled(false) when switch back to MyListFragment(). In case you have many Fragment Transaction, it's not a good approach to display the UP icon.

Alternatively, we can implements OnBackStackChangedListener, add it in FragmentManager by calling addOnBackStackChangedListener(), and override onBackStackChanged() method to check emptiness of back stack entry by calling getBackStackEntryCount(), then call setDisplayHomeAsUpEnabled() accordingly.

implements OnBackStackChangedListener to display UP icon, automatically by getBackStackEntryCount()


package com.example.androiddualmode;

import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager.OnBackStackChangedListener;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnBackStackChangedListener{

// if run on phone, isSinglePane = true
// if run on tablet, isSinglePane = false
static boolean isSinglePane;

static String[] month ={
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"};

public static class MyListFragment extends ListFragment {

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);

ListAdapter myArrayAdapter =
new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_list_item_1, month);
setListAdapter(myArrayAdapter);

}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {

String clickedDetail = (String)l.getItemAtPosition(position);

if(isSinglePane == true){
/*
* The second fragment not yet loaded.
* Load MyDetailFragment by FragmentTransaction, and pass
* data from current fragment to second fragment via bundle.
*/
MyDetailFragment myDetailFragment = new MyDetailFragment();
Bundle bundle = new Bundle();
bundle.putString("KEY_DETAIL", clickedDetail);
myDetailFragment.setArguments(bundle);
FragmentTransaction fragmentTransaction =
getActivity().getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.phone_container, myDetailFragment);

/*
* Add this transaction to the back stack.
* This means that the transaction will be remembered after it is
* committed, and will reverse its operation when later popped off
* the stack.
*/
fragmentTransaction.addToBackStack(null);

fragmentTransaction.commit();

//getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);

}else{
/*
* Activity have two fragments. Pass data between fragments
* via reference to fragment
*/

//get reference to MyDetailFragment
MyDetailFragment myDetailFragment =
(MyDetailFragment)getFragmentManager().findFragmentById(R.id.detail_fragment);
myDetailFragment.updateDetail(clickedDetail);

}
}

}

public static class MyDetailFragment extends Fragment {

TextView textDetail;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.layout_detailfragment, null);
textDetail = (TextView)view.findViewById(R.id.text_detail);

Bundle bundle = getArguments();
if(bundle != null){
String detail = bundle.getString("KEY_DETAIL", "no argument pass");
textDetail.setText(detail);
}

return view;
}

public void updateDetail(String detail) {
textDetail.setText(detail);
}

}

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

View v = findViewById(R.id.phone_container);
if(v == null){
//it's run on tablet
isSinglePane = false;
/*
* MyListFragment and MyDetailFragment have been loaded in XML,
* no need load.
*/

}else{
//it's run on phone
//Load MyListFragment programmatically
isSinglePane = true;

if(savedInstanceState == null){
//if's the first time created
MyListFragment myListFragment = new MyListFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.phone_container, myListFragment);
fragmentTransaction.commit();
}
}

getFragmentManager().addOnBackStackChangedListener(this);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getFragmentManager().popBackStack();
//getActionBar().setDisplayHomeAsUpEnabled(false);
return true;
}

return super.onOptionsItemSelected(item);
}

final static String KEY_DISPLAY_OPT = "KEY_Display_Option";

@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putInt(KEY_DISPLAY_OPT, getActionBar().getDisplayOptions());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
int savedDisplayOpt = savedInstanceState.getInt(KEY_DISPLAY_OPT);
if(savedDisplayOpt != 0){
getActionBar().setDisplayOptions(savedDisplayOpt);
}
}

@Override
public void onBackStackChanged() {
int backStackEntryCount = getFragmentManager().getBackStackEntryCount();
if(backStackEntryCount > 0){
getActionBar().setDisplayHomeAsUpEnabled(true);
}else{
getActionBar().setDisplayHomeAsUpEnabled(false);
}
}

}


download filesDownload the files.

Next:
- Implement animation in FragmentTransaction