skip to main | skip to sidebar

Android Development Tutorial

Pages

  • Home
 
  • RSS
  • Twitter
Related Posts Plugin for WordPress, Blogger...
Sunday, October 7, 2012

3D Rotation in Android

Posted by Raju Gupta at 1:19 PM – 0 comments
 

Android provides Animation API. By using we can create custom animations . Android sample provides Animation classes for some standard types like 3D rotation, Push up , shake etc.

Step 1 : include Rotate3dAnimation.java file in your package.
Step 2 : create a reportview.xml as layout file.
Step 3 : below is code to provide 360 degree rotation and display a html file from assets folder.


XML file Layout code  

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/container" android:layout_width="match_parent"
 android:layout_height="match_parent">

 <WebView android:layout_height="fill_parent"
  android:layout_width="fill_parent" android:id="@+id/webAnim1"></WebView>
 <WebView android:id="@+id/webAnim" android:layout_height="fill_parent"
  android:layout_width="fill_parent"></WebView>

</FrameLayout>

public class HTMLReportDisplay extends Activity {

 private ViewGroup mContainer;
 private WebView mWebView;
 private WebView mWebView1;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.reportview);

  mContainer = (ViewGroup) findViewById(R.id.container);
  mWebView = (WebView) findViewById(R.id.webAnim);
  mWebView1 = (WebView) findViewById(R.id.webAnim1);

  String report = "name of html file from asset folder";
  mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
  mWebView.getSettings().setBuiltInZoomControls(true);
  mWebView.loadUrl("file:///android_asset/" + report + ".html");
  

  mWebView1.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
  mWebView1.getSettings().setBuiltInZoomControls(true);
  mWebView1.loadUrl("file:///android_asset/" + report + ".html");
  /** Since we are caching large views, we want to keep their cache
    between each animation*/
  mContainer
    .setPersistentDrawingCache(ViewGroup.PERSISTENT_ANIMATION_CACHE);

  applyRotation(1, 90, 0);
 }

 /**
  * Setup a new 3D rotation on the container view.
  * 
  * @param position
  *            the item that was clicked to show a picture, or -1 to show the
  *            list
  * @param start
  *            the start angle at which the rotation must begin
  * @param end
  *            the end angle of the rotation
  */
 private void applyRotation(int position, float start, float end) {
  // Find the center of the container
  final float centerX = mContainer.getWidth() / 2.0f;
  final float centerY = mContainer.getHeight() / 2.0f;
  /** Create a new 3D rotation with the supplied parameter
   The animation listener is used to trigger the next animation*/
  final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end,
    centerX, centerY, 310.0f, true);
  rotation.setDuration(400);
  rotation.setFillAfter(true);
  rotation.setInterpolator(new AccelerateInterpolator());
  rotation.setAnimationListener(new DisplayNextView(position));

  mContainer.startAnimation(rotation);
 }

 /**
  * this function is called when any key is pressed.
  */
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  switch (keyCode) {
  /** Check if back button key is pressed */
  case KeyEvent.KEYCODE_BACK:
   applyRotation(-1, 180, 0);
   new Handler().postDelayed(new Runnable() {

    public void run() {
     finishActivity();

    }
   }, 300);

   break;
  }
  return super.onKeyDown(keyCode, event);
 }

 private void finishActivity() {
  finish();
 }

 /**
  * This class listens for the end of the first half of the animation. It
  * then posts a new action that effectively swaps the views when the
  * container is rotated 90 degrees and thus invisible.
  */
 private final class DisplayNextView implements Animation.AnimationListener {
  private final int mPosition;

  public DisplayNextView(int position) {
   mPosition = position;
  }

  public void onAnimationStart(Animation animation) {
  }

  public void onAnimationEnd(Animation animation) {
   mContainer.post(new SwapViews(mPosition));
  }

  public void onAnimationRepeat(Animation animation) {
  }
 }

 /**
  * This class is responsible for swapping the views and start the second
  * half of the animation.
  */
 private final class SwapViews implements Runnable {
  private final int mPosition;

  public SwapViews(int position) {
   mPosition = position;
  }

  public void run() {
   final float centerX = mContainer.getWidth() / 2.0f;
   final float centerY = mContainer.getHeight() / 2.0f;
   Rotate3dAnimation rotation;

   if (mPosition > -1) {
    mWebView.setVisibility(View.GONE);
    mWebView1.setVisibility(View.VISIBLE);
    mWebView1.requestFocus();

    rotation = new Rotate3dAnimation(180, 0, centerX, centerY,
      310.0f, false);
   } else {
    mWebView1.setVisibility(View.GONE);
    mWebView.setVisibility(View.VISIBLE);
    mWebView.requestFocus();

    rotation = new Rotate3dAnimation(90, 0, centerX, centerY,
      310.0f, false);
   }

   rotation.setDuration(500);
   rotation.setFillAfter(true);
   rotation.setInterpolator(new DecelerateInterpolator());

   mContainer.startAnimation(rotation);
  }
 }
}

Email This BlogThis! Share to X Share to Facebook

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments (Atom)

More Technical Blogs

  • Tech Savvy - Technology Tips
  • PHP Video Tutorial
  • Java Programs with Output
  • C Programming Tutorial
  • Linux Tutorial
  • Language Tutorial
  • Web Development tutorial
  • Popular
  • Recent
  • Archives

Popular Posts

  • Android Application Development Episode #7 - Using Basic Lists
    In this episode we will take a first glance at lists and how to create them. This is the first episode on lists and due to the fact that l...
  • Android Video Tutorial: Android Application Development - Traceview
    In this 40-minute tutorial, Marko will show you how you can use the Android SDK tool Traceview to analyze data and debug issues in your An...
  • Andorid application that listens to incoming sms
    An android app that sits on a phone and listens to incoming sms and makes a http call in format http://youtestserver.com/pushMsg.php...
  • Login Screen Creation using Android
    This code snippet creates a login screen with 2 labels (Username, Password), corresponding 2 text boxes and 2 buttons (Login, Reset) using ...
  • Dialing phone number from Google Android Application
    Android basic framework is used to call a number from Android application. import android.app.Activity; import android.content.Intent; ...
  • What is Android Manifest File
    One of the most important part of your android application is the manifest file which is an xml file also known as AndroidManifest.xml. E...
  • Setting Android SDK in our Eclipse IDE
    Short video clip that shows how to set the Android SDK in our Eclipse IDE. This is one video out of five videos that explain in five steps...
  • Android Application Development Episode #9 - Lists: Item Clicks
    In this tutorial we will take a look at how to use ItemClickListeners within ListViews. For this we will extend the application we created...
  • Android Video Tutorial: Android Application Development - BaseActivity
    This video comes from Marakana's 5-Day Android Bootcamp Training Course which Marko Gargenta taught in San Jose, CA earlier this year. ...
  • Android Video Tutorial - build the Simple Flashlight App
    This is the second segment from a 5 week online course, Developing Android Applications with Java. In this segment, instructor Tony Hiller...
Powered by Blogger.

Archives

  • ▼  2012 (44)
    • ▼  October (31)
      • Reordering of listview
      • Text-to-Speech capability for Android Devices
      • Android Stub uninstalling the existing client and ...
      • Tab creation in android screen
      • ListView Recordering by drag drop in Android
      • Android app for SimpleWiktionary
      • App in android for random quote generation
      • Implementing ListView-Adapter in Android
      • Extract all java classes from APK
      • Get XML from APK
      • Sending SMS from the Android Application
      • How to create Drop Down in Android
      • Android Page Navigation
      • To retrieve the cell info for Android device
      • Creating the enrty in the agenda for Android devices.
      • Test Application for Samsung Android devices
      • Color Picker from Image in Android
      • Image Switcher & Gallery in Android
      • Andorid application that listens to incoming sms
      • Accelerometer management for the Android devices
      • Alert box for Confirm
      • 3D Rotation in Android
      • Custom Bar Control for Android using Java
      • Creating Layouts TableRows and TextViews dynamical...
      • Android SeekBar
      • Dialing phone number from Google Android Application
      • Login Screen Creation using Android
      • Add a Progress Bar to Android based Mobile Screens
      • Adding a button to Android based mobile screens
      • Android Dynamically generating views
      • Timezone converter
    • ►  September (3)
    • ►  March (1)
    • ►  February (9)
  • ►  2011 (69)
    • ►  December (69)
 

Followers

Labels

  • Activities (9)
  • Andoird Menu (2)
  • Android timelineActivity. (1)
  • Android Adapter (1)
  • Android app (9)
  • Android App Inventor (1)
  • Android App Publishing (2)
  • Android Application Components (3)
  • Android Application Fundamental (2)
  • Android Architecture (1)
  • Android AsyncTask (1)
  • Android Basic (7)
  • Android Bootcamp Training (18)
  • Android Button Widget (3)
  • Android Custom Style (1)
  • Android Dialog (1)
  • Android Drawable (2)
  • Android Environment (1)
  • Android example (9)
  • Android File System (2)
  • Android Geolocation (2)
  • Android ImageView (1)
  • Android Installation (8)
  • Android intents (5)
  • Android lifecycle (1)
  • Android LIst (4)
  • Android Listener (4)
  • Android Manifest (3)
  • Android Market (1)
  • Android Notification (1)
  • Android Object (1)
  • Android Package File (1)
  • Android Platform (1)
  • Android service (4)
  • Android StatusActivity (1)
  • Android Theme Style (3)
  • Android Traceview (1)
  • Android UI (6)
  • Android Unit Testing (1)
  • Android Widget (4)
  • AndroidManifest.xml (4)
  • Application Icon (1)
  • Broadcast Receiver (2)
  • Content Providers (1)
  • Creating Activities (1)
  • Creating Custom Styles in Android (1)
  • Creating Multiple Activities (1)
  • Database (3)
  • draw9patch (1)
  • Eclipse (12)
  • Explicit Intents (2)
  • Explicit Intents Example (1)
  • Hello world with Android (1)
  • Helloworld with Android (5)
  • Implicit Intents (2)
  • Implicit Intents Example (1)
  • Layout View (3)
  • lifemichael (8)
  • Location Sensor (1)
  • Multiple Activities (2)
  • Netbeans (1)
  • OpenGL ES Graphics (1)
  • Passing Values with Intents (2)
  • Project Structure (1)
  • Retrieving Image URI from Intents (1)
  • Setting Android Environment (1)
  • SQLite (3)
  • TGENT (8)
  • UserGroupAtGoogle (8)
  • XML (1)
  • xtensive arts Training (11)
 
 
© 2011 Android Development Tutorial | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger