android 动画效果2 仿老版本youku菜单效果 (巩固自己的动画知识)

android 动画效果2 仿老版本youku菜单效果 (巩固自己的动画知识)

都是网上老的效果,网上代码有很多,不喜勿喷,只是巩固一下自己的动画知识。


此效果主要使用的是animation的旋转动画RotateAnimation,只需要设置他的旋转角度和旋转的位置

//显示效果,图片的左边,x轴从-180旋转到0度,旋转点自身中间,旋转自身高度
Animation animation=new RotateAnimation(-180, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f);

效果图:


主要动画代码

package com.example.mylessonyoukumenu;


import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.RotateAnimation;


public class MyAnimation {
/**
* 进入效果
* @param viewGroup
* @param duration
*/
public static void startAnimationIn(ViewGroup viewGroup,int duration){
for(int i=0;i<viewGroup.getChildCount();i++){
viewGroup.getChildAt(i).setVisibility(View.VISIBLE);
viewGroup.getChildAt(i).setClickable(true);
viewGroup.getChildAt(i).setFocusable(true);
}
//显示效果,图片的左边,x轴从-180旋转到0度,旋转点自身中间,旋转自身高度
Animation animation=new RotateAnimation(-180, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f);
animation.setFillAfter(true);
animation.setDuration(duration);
viewGroup.startAnimation(animation);
}
/**
* 进出效果
* @param viewGroup
* @param duration
* @param delay
*/
public static void startAnimationOut(final ViewGroup viewGroup,int duration,int delay){
for(int i=0;i<viewGroup.getChildCount();i++){
viewGroup.getChildAt(i).setClickable(false);
viewGroup.getChildAt(i).setFocusable(false);
}
Animation animation=new RotateAnimation(0, -180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f);
animation.setDuration(duration);
animation.setStartOffset(delay);
animation.setFillAfter(true);
animation.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
}

@Override
public void onAnimationRepeat(Animation animation) {
}

@Override
public void onAnimationEnd(Animation animation) {
for(int i=0;i<viewGroup.getChildCount();i++){
viewGroup.getChildAt(i).setVisibility(View.GONE);
}
}
});

viewGroup.startAnimation(animation);
}

}


activity



package com.example.mylessonyoukumenu;


import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.os.Build;


public class MainActivity extends Activity {
private boolean isLevel3Show=true;
private boolean isLevel2Show=true;
private View level3;
private View level2;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
float density = getResources().getDisplayMetrics().density;
Log.e("fff", "density:"+density);
int densityDpi = getResources().getDisplayMetrics().densityDpi;
Log.e("fff", "densityDpi:"+densityDpi);
level2 = findViewById(R.id.lever2);
level3 = findViewById(R.id.lever3);

View home = findViewById(R.id.home);
View menu = findViewById(R.id.menu);

home.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if(!isLevel2Show){
MyAnimation.startAnimationIn((RelativeLayout)level2, 500);
}else{
if(isLevel3Show){
MyAnimation.startAnimationOut((RelativeLayout)level3, 500, 0);
MyAnimation.startAnimationOut((RelativeLayout)level2, 500, 500);
isLevel3Show = false;
}else{
MyAnimation.startAnimationOut((RelativeLayout)level2, 500,0);
}
}
isLevel2Show=!isLevel2Show;

}
});
menu.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if(isLevel3Show){
MyAnimation.startAnimationOut((RelativeLayout)level3, 500, 0);
isLevel3Show=false;
}else{
MyAnimation.startAnimationIn((RelativeLayout)level3, 500);
isLevel3Show=true;
}
}
});

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {


// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}


/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {


public PlaceholderFragment() {
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
}


}


布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <RelativeLayout 
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:id="@+id/lever"
        android:background="@drawable/level1"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        >
        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/home"
            android:background="@drawable/icon_home"
            android:layout_centerInParent="true"
            />
    </RelativeLayout>
    
    <RelativeLayout 
        android:layout_width="180dp"
        android:layout_height="90dp"
        android:id="@+id/lever2"
        android:background="@drawable/level2"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        >
        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/icon_search"
            android:layout_alignParentBottom="true"
            android:layout_margin="10dp"
            />
           <ImageView 
               android:id="@+id/menu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/icon_menu"
            android:layout_centerHorizontal="true"
            android:layout_margin="6dp"
            />
        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/icon_myyouku"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_margin="10dp"
            />
    </RelativeLayout>
    
    <RelativeLayout 
        android:layout_width="280dp"
        android:layout_height="140dp"
        android:background="@drawable/level3"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/lever3"
        >
        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/channel4"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp"
            />
        <ImageView 
            android:id="@+id/c1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/channel1"
            android:layout_alignParentBottom="true"
                android:layout_marginBottom="6dip"
            android:layout_marginLeft="12dip"
            />
        <ImageView 
            android:id="@+id/c2"
            android:background="@drawable/channel2"
            
                        android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/c1"
            android:layout_marginBottom="12dp"
            android:layout_marginLeft="30dp"
            />
         <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/channel3"
            android:layout_above="@id/c2"
            android:layout_marginBottom="6dip"
            android:layout_marginLeft="8dip"
            android:layout_toRightOf="@id/c2"
            />
        
        
    </RelativeLayout>
    
    
    
    
    
    
</RelativeLayout>


源码地址:

http://download.csdn.net/detail/pangzaifei/7311677







你可能感兴趣的:(android 动画效果2 仿老版本youku菜单效果 (巩固自己的动画知识))