Android界面特效全汇总

(一)Activity 页面切换的效果  

Android 2.0 之后有了 overridePendingTransition() ,其中里面两个参

数,一个是前一个 activity 的退出两一个 activity 的进入,

Java 代码   

1.  @Override       

public  void  onCreate(Bundle  savedInstanceState)  {       

2.      super.onCreate(savedInstanceState);         

3.      

4.      setContentView(R.layout.SplashScreen);       

5.         

6.      new  Handler().postDelayed(new  Runnable()  {       

7.      @Override       

8.      public  void  run()  {       

9.      Intent  mainIntent  =  new  Intent(SplashScreen.this,    

        AndroidNews.class);       

10.    SplashScreen.this.startActivity(mainIntent);       

11.    SplashScreen.this.finish();       

12.       

13.    overridePendingTransition(R.anim.mainfadein,       

14.                      R.anim.splashfadeout);       

15.  }       

16.},  3000);       

}      

  

上面的代码只是闪屏的一部分。

Java 代码   

1.  getWindow().setWindowAnimations  (  int  );      这可没有上个好但是也可以  。

 

实现淡入淡出的效果 

Java 代码   

1.  overridePendingTransition(Android.R.anim.fade_in,android.R.anim.fade_out);        

  

由左向右滑入的效果 

Java 代码   

1.  overridePendingTransition(Android.R.anim.slide_in_left,android.R.anim.slide_out_right);        

  

实现 zoomin 和 zoomout,即类似 iphone 的进入和退出时的效果 

Java 代码   

1.  overridePendingTransition(R.anim.zoomin,  R.anim.zoomout);     

  

新建 zoomin.xml 文件 

Xml 代码   

1.      

2. 

3.  xmlns:Android="http://schemas.android.com/apk/res/android"    

4.  Android:interpolator="@android:anim/decelerate_interpolator">

5.  Android:fromYScale="2.0"  android:toYScale="1.0"    

6.  Android:pivotX="50%p"  android:pivotY="50%p"    

7.  Android:duration="@android:integer/config_mediumAnimTime"  />

    

  

新建 zoomout.xml 文件 

Xml 代码   

1.      

2. 

3.  xmlns:Android="http://schemas.android.com/apk/res/android"    

4.  Android:interpolator="@android:anim/decelerate_interpolator"

5.  Android:zAdjustment="top">    

6. 

7.    Android:fromYScale="1.0"  android:toYScale=".5"    

8.    Android:pivotX="50%p"  android:pivotY="50%p"    

9.    Android:duration="@android:integer/config_mediumAnimTime"  />

    

10.

11.Android:duration="@android:integer/config_mediumAnimTime"/>    

12.     

 

(二)android 菜单动画

先请注意,这里的菜单并不是按机器上的 MENU 出现在那种菜单,而是基于

Android SDK 提供的 android.view.animation.TranslateAnimation(extends

android.view.animation.Animation)类实例后附加到一个 Layout 上使之产生的

有动画出现和隐藏效果的菜单。

               原理:Layout(菜单)从屏幕内(挨着屏

幕边沿,其实并非一定,视需要的初态和末态而定)动态

的移动到屏幕外(在外面可以挨着边沿,也可以离远点,

这个无所谓了),这样就可以达到动态菜单的效果了。但

是由于 Animation 的一些奇怪特性(setFill**() 函数的作用效果,这个在我使

用的某几个 Animation 当中出现了没有想明白的效果),就暂不理会这个东西了,

所以使得我们还需要用上 XML 属性 android:visibility。当 Layout(菜单)显

示的时候,设置 android:visibility="visible",当 Layout(菜单)隐藏的时

候,设置 android:visibility="gone",这里 android:visibility 可以有 3 个

值,"visible"为可见,"invisible"为不可见但占空间,"gone"为不可见且不占

空间(所谓的占不占空间,这个可以自己写个 XML 来试试就明白了)。

               Class TranslateAnimation 的使用:Animation 有两种定义方

法,一种是用 Java code,一种是用 XML,这里只介绍用 code 来定义(因为用

XML 来定义的那种我没用过。。嘿嘿。。)。多的不说,看代码。

这里是 TranslateAnimationMenu.java(我在里面还另加入了 ScaleAnimation

产生的动画,各位朋友可以照着 SDK 以及程序效果来理解):

package com.TranslateAnimation.Menu;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.Animation;

import android.view.animation.TranslateAnimation;

import android.widget.Button;

import android.widget.LinearLayout;

public class TranslateAnimationMenu extends Activity {

       /** Called when the activity is first created. */

       //TranslateAnimation showAction, hideAction;

       Animation showAction, hideAction;

       LinearLayout menu;

       Button button;

       boolean menuShowed;

       

       @Override

       public void onCreate(Bundle savedInstanceState) 

{

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        menu = (LinearLayout) findViewById(R.id.menu);

        button = (Button) findViewById(R.id.button);

        // 这里是 TranslateAnimation 动画

        showAction = new TranslateAnimation(

Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,

0.0f,  Animation.RELATIVE_TO_SELF, -1.0f,

Animation.RELATIVE_TO_SELF, 0.0f);

// 这里是 ScaleAnimation 动画 

//showAction = new ScaleAnimation(

//       1.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f,

//       Animation.RELATIVE_TO_SELF, 0.0f);

showAction.setDuration(500);

 

// 这里是 TranslateAnimation 动画                

hideAction = new TranslateAnimation(

   Animation.RELATIVE_TO_SELF, 0.0f, 

Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, -1.0f);

// 这里是 ScaleAnimation 动画

//hideAction = new ScaleAnimation(

//               1.0f, 1.0f, 1.0f, 0.0f,    

Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,

0.0f);

 hideAction.setDuration(500);

menuShowed = false;

menu.setVisibility(View.GONE);

button.setOnClickListener(new OnClickListener() {

      @Override

      public void onClick(View v) {

      // TODO Auto-generated method stub

         if (menuShowed) {

             menuShowed = false;

             menu.startAnimation(hideAction);

             menu.setVisibility(View.GONE);

        }

        else {

            menuShowed = true;

            menu.startAnimation(showAction);

            menu.setVisibility(View.VISIBLE);

       }

     }

                       

   });

  }

}

这里是 main.xml:

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

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

     android:layout_height="wrap_content"

android:text="@string/hello" />

     android:layout_height="100px" android:layout_width="fill_parent"

     android:layout_alignParentTop="true"

android:background="#ffffff">

    

       android:layout_height="fill_parent" android:text="I am a menu"

       android:gravity="center" />

  

16.            

19.            

22.        

23.    

24.    

  

BrowserInfo 用于提供一个项的信息

  

Java 代码       

1.   public class BrowserInfo {    

2.     

3.       private int appInfoId;    

4.       private int imageId;    

5.       private boolean checked;    

6.     

7.       public BrowserInfo(int appInfoId, int imageId, boolean checked) {    

8.           this.appInfoId = appInfoId;    

9.           this.imageId = imageId;    

10.          this.checked = checked;    

11.      }    

12.    

13.      public boolean isChecked() {    

14.          return checked;    

15.      }    

16.    

17.      public void setChecked(boolean checked) {    

18.          this.checked = checked;    

19.      }    

20.    

21.      public int getAppInfoId() {    

22.          return appInfoId;    

23.      }    

24.    

25.      public void setAppInfoId(int appInfoId) {    

26.          this.appInfoId = appInfoId;    

27.      }    

28.    

29.      public int getImageId() {    

30.          return imageId;    

31.      }    

32.    

33.      public void setImageId(int imageId) {    

34.          this.imageId = imageId;    

35.      }    

36.    

37.  }  

  

GroupInfo  用于显示一个组的信息

  

Java 代码       

1.   import java.util.List;    

2.     

3.   public class GroupInfo {    

4.     

5.       private BrowserInfo group;    

6.       private List child;    

7.     

8.       public GroupInfo(BrowserInfo group, List child) {    

9.     

10.          this.group = group;    

11.          this.child = child;    

12.      }    

13.          

14.      public void add(BrowserInfo info){    

15.          child.add(info);    

16.      }    

17.          

18.      public void remove(BrowserInfo info){    

19.          child.remove(info);    

20.      }    

21.          

22.      public void remove(int index){    

23.          child.remove(index);    

24.      }    

25.          

26.      public int getChildSize(){    

27.          return child.size();    

28.      }    

29.          

30.      public BrowserInfo getChild(int index){    

31.          return child.get(index);    

32.      }    

33.    

34.      public BrowserInfo getBrowserInfo() {    

35.          return group;    

36.      }    

37.    

38.      public void setBrowserInfo(BrowserInfo group) {    

39.          this.group = group;    

40.      }    

41.    

42.      public List getChild() {    

43.          return child;    

44.      }    

45.    

46.      public void setChild(List child) {    

47.          this.child = child;    

48.      }    

49.    

50.  }  

  

  

ClearBrowserActivity 最后就是把要显示的内容显示出来的。

  

  

Java 代码       

1.   public class ClearBrowserActivity extends Activity implements ExpandableListView.OnGr

oupClickListener,ExpandableListView.OnChildClickListener{    

2.     

3.       private List group;    

4.     

5.       private ClearExpandableListAdapter listAdapter = null;    

6.       private ExpandableListView appList;    

7.     

8.       public void onCreate(Bundle savedInstanceState) {    

9.           super.onCreate(savedInstanceState);    

10.          setContentView(R.layout.browserlayout);    

11.          appList = (ExpandableListView) findViewById(R.id.appList);    

12.          init();    

13.          BrowserInfo browsingHistoryParents = newBrowserInfo(    

14.                  R.string.browsinghistory, R.drawable.browser_image,true);    

15.          List browsingHistoryChild = new ArrayList();    

16.          BrowserInfo browser = newBrowserInfo(R.string.browser,    

17.                  R.drawable.browser_image, true);    

18.          browsingHistoryChild.add(browser);    

19.    

20.          BrowserInfo operaClear = newBrowserInfo(R.string.opera_clear,    

21.                  R.drawable.browser_image,true);    

22.          browsingHistoryChild.add(operaClear);    

23.              

24.          BrowserInfo firefoxClear = newBrowserInfo(R.string.firefox_clear,    

25.                  R.drawable.browser_image,true);    

26.          browsingHistoryChild.add(firefoxClear);    

27.              

28.          BrowserInfo ucwebClear = newBrowserInfo(R.string.ucweb_clear,    

29.                  R.drawable.browser_image,false);    

30.          browsingHistoryChild.add(ucwebClear);    

31.              

32.          GroupInfo browserGroup = new GroupInfo(browsingHistoryParents,    

33.                  browsingHistoryChild);    

34.          addGroup(browserGroup);    

35.    

36.          listAdapter = new ClearExpandableListAdapter(this, group);    

37.          appList.setOnChildClickListener(this);    

38.          appList.setOnGroupClickListener(this);    

39.          appList.setAdapter(listAdapter);    

40.      }    

41.    

42.      private void init() {    

43.          group = new ArrayList();    

44.      }    

45.    

46.      private void addGroup(GroupInfo info) {    

47.          group.add(info);    

48.      }    

49.    

50.      private static BrowserInfo newBrowserInfo(int infoId, int imageId,boolean checked) {    

51.          return new BrowserInfo(infoId, imageId,checked);    

52.      }    

53.    

54.      @Override  

55.      public boolean onGroupClick(ExpandableListView parent, View v,    

56.              int groupPosition, long id) {    

57.          return false;    

58.      }    

59.    

60.      @Override  

61.      public boolean onChildClick(ExpandableListView parent, View v,    

62.              int groupPosition, int childPosition, long id) {    

63.          return false;    

64.      }    

65.  }  

android 3d 旋转

文章分类:Java 编程  

   在javaeye里看到了关于3d旋转的文章,可是博主没有透入什么技术细节。

由于一直想做出那种旋转效果,所以就想啊想,终于想出来了(  我是个小菜

鸟)。呵呵,不管怎样,希望对想做还没做出来的朋友一些帮助。

   先上一个效果图:

 

 

  

   这是你想要的吗?如果是就继续往下看吧。

   其实,这个效果是用 animation 配合 camera 做出来的,相信大家在 apidemo

里面看过类似的。

   那么先写一个继承 animation 的类:Rotate3d

  

Rotate3d 代码       

1.   public class Rotate3d extends Animation {    

2.       private float mFromDegree;    

3.       private float mToDegree;    

4.       private float mCenterX;    

5.       private float mCenterY;    

6.       private float mLeft;    

7.       private float mTop;    

8.       private Camera mCamera;    

9.       private static final String TAG = "Rotate3d";    

10.    

11.      public Rotate3d(float fromDegree, float toDegree, float left, float top,    

12.              float centerX, float centerY) {    

13.          this.mFromDegree = fromDegree;    

14.          this.mToDegree = toDegree;    

15.          this.mLeft = left;    

16.          this.mTop = top;    

17.          this.mCenterX = centerX;    

18.          this.mCenterY = centerY;    

19.    

20.      }    

21.    

22.      @Override    

23.      public void initialize(int width, int height, int parentWidth,    

24.              int parentHeight) {    

25.          super.initialize(width, height, parentWidth, parentHeight);    

26.          mCamera = new Camera();    

27.      }    

28.    

29.      @Override    

30.      protected void applyTransformation(float interpolatedTime, Transformation t) {    

31.          final float FromDegree = mFromDegree;    

32.          float degrees = FromDegree + (mToDegree - mFromDegree)    

33.                  * interpolatedTime;    

34.          final float centerX = mCenterX;    

35.          final float centerY = mCenterY;    

36.          final Matrix matrix = t.getMatrix();    

37.    

38.          if (degrees <= -76.0f) {    

39.               degrees = -90.0f;    

40.               mCamera.save();    

41.               mCamera.rotateY(degrees);    

42.               mCamera.getMatrix(matrix);    

43.               mCamera.restore();    

44.          } else if(degrees >=76.0f){    

45.              degrees = 90.0f;    

46.              mCamera.save();    

47.              mCamera.rotateY(degrees);    

48.              mCamera.getMatrix(matrix);    

49.              mCamera.restore();    

50.          }else{    

51.              mCamera.save();    

52.                         //这里很重要哦。    

53.              mCamera.translate(0, 0, centerX);    

54.              mCamera.rotateY(degrees);    

55.              mCamera.translate(0, 0, -centerX);    

56.              mCamera.getMatrix(matrix);    

57.              mCamera.restore();    

58.          }    

59.    

60.          matrix.preTranslate(-centerX, -centerY);    

61.          matrix.postTranslate(centerX, centerY);    

62.      }    

63.  }  

  

  有了这个类一切都会变得简单的,接着只要在 activity 中写两个 Rotate3d

的对象,让两个 view,分别做这两个对象的 animation 就好了。(  原来就这么

简单啊!无语)

  

Activity 代码       

1.   //下面两句很关键哦,呵呵,心照不宣。    

2.           Rotate3d leftAnimation = new Rotate3d(-0, -90, 0, 0, mCenterX, mCenterY);    

3.           Rotate3d rightAnimation = new Rotate3d(-0+90, -90+90, 0.0f, 0.0f, mCenterX, mCent

erY);    

4.     

5.           leftAnimation.setFillAfter(true);    

6.           leftAnimation.setDuration(1000);    

7.           rightAnimation.setFillAfter(true);    

8.           rightAnimation.setDuration(1000);    

9.     

10.          mImageView1.startAnimation(leftAnimation);    

11.          mImageView2.startAnimation(rightAnimation);  

   

  

   

  

还要写一下 mImageView1,mImageView2 的 xml,

  

Xml 代码       

1.     

2.  

3.       android:orientation="vertical"  

4.       android:layout_width="fill_parent"  

5.       android:layout_height="wrap_content"  

6.       >  

7.     

8.      

9.           android:layout_width="fill_parent"  

10.          android:layout_height="fill_parent">  

11.    

12.                    

13.                      android:id="@+id/image1"  

14.                      android:layout_gravity="center_horizontal"  

15.                      android:layout_width="fill_parent"  

16.                      android:layout_height="wrap_content"  

17.                      android:src="@drawable/image1"  

18.                      />  

19.                    

20.                      android:id="@+id/image2"  

21.                      android:background="#ffff0000"  

22.                      android:layout_gravity="center_horizontal"  

23.                      android:layout_width="fill_parent"  

24.                      android:layout_height="wrap_content"  

25.                      android:src="@drawable/image2"  

26.                      />  

27.    

28.        

29.    

  写完收工。如果有不足之处,还请朋友们不吝指教。

  

  

Android File Explorer 展示图片

文章分类:移动开发  

 

 

res/layout/row.xml

  

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

   android:id="@+id/rowtext"

   android:layout_width="fill_parent"

         android:layout_height="25px"

         android:textSize="23sp" />

  

/res/layout/main.xml  

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

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

 android:id="@+id/path"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    />

 android:id="@android:id/list"

 android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

 />

 android:id="@android:id/empty"

 android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="No Data"

 />

/res/layout/jpgdialog.xml

  

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

              android:id="@+id/layout_root"

              android:orientation="vertical"

              android:layout_width="fill_parent"

              android:layout_height="fill_parent"

              android:paddingLeft="10dip"

              android:paddingRight="10dip"

              >

   

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:textSize="11sp" />

              />

   

               android:layout_width="150px"

               android:layout_height="150px"

               />

   

你可能感兴趣的:(Android开发详解,android)