【动画】【特效】 17种常用动画特效-程序员宅基地

技术标签: 移动开发  

   

主Activity的布局文件xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget33"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/back"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/widget34"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <LinearLayout
        android:id="@+id/widget36"
        android:layout_width="fill_parent"
        android:layout_height="40px"
        android:background="@drawable/bt_group_back" >

        <Button
            android:id="@+id/button_Last"
            android:layout_width="64px"
            android:layout_height="fill_parent"
            android:background="@drawable/ic_cmd_last" />

        <Button
            android:id="@+id/button_Replay"
            android:layout_width="64px"
            android:layout_height="fill_parent"
            android:background="@drawable/ic_cmd_replay" />

        <Button
            android:id="@+id/button_Next"
            android:layout_width="64px"
            android:layout_height="fill_parent"
            android:background="@drawable/ic_cmd_next" />

        <Button
            android:id="@+id/button_List"
            android:layout_width="64px"
            android:layout_height="fill_parent"
            android:background="@drawable/ic_cmd_list" />

        <Button
            android:id="@+id/button_Exit"
            android:layout_width="65sp"
            android:layout_height="fill_parent"
            android:background="@drawable/ic_cmd_power" />
    </LinearLayout>

    <ImageButton
        android:id="@+id/Button01"
        android:layout_width="90sp"
        android:layout_height="80sp"
        android:layout_marginLeft="100sp"
        android:layout_marginTop="80sp"
        android:background="@drawable/favorite"
        android:contentDescription="五角星图片" />

</LinearLayout>
View Code

主Activity

package zyf.myAnimation;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
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.ImageButton;
import android.widget.Toast;

public class myAnimation extends Activity implements OnClickListener {

    private ImageButton button_toTestAnimation;
    private Button bt_last, bt_replay, bt_next, bt_list, bt_exit;
    protected Animation animation;
    private int[] ID;
    private MenuItem back_Menu, next_Menu, restart_Menu, selsect_Menu,
            exit_Menu;
    private final int Back_Menu_ID = Menu.FIRST + 1;
    private final int Next_Menu_ID = Menu.FIRST + 2;
    private final int Selsect_Menu_ID = Menu.FIRST + 3;
    private final int Restart_Menu_ID = Menu.FIRST + 4;
    private final int Exit_Menu_ID = Menu.FIRST + 5;
    private int the_Animation_ID = 0;
    private int i = 0;
    private int requestCode = 110;
    private Bundle bundle;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ID = new int[] { 
                R.anim.myanimation_simple, R.anim.my_alpha_action,
                R.anim.my_scale_action, R.anim.my_translate_action,
                R.anim.my_rotate_action, R.anim.alpha_scale,
                R.anim.alpha_translate, R.anim.alpha_rotate,
                R.anim.scale_translate, R.anim.scale_rotate,
                R.anim.translate_rotate, R.anim.alpha_scale_translate,
                R.anim.alpha_scale_rotate, R.anim.alpha_translate_rotate,
                R.anim.scale_translate_rotate,
                R.anim.alpha_scale_translate_rotate, R.anim.myown_design };
        findMyButton();
        myButtonSetListener();
    }

    private void myButtonSetListener() {
        bt_last.setOnClickListener(this);
        bt_replay.setOnClickListener(this);
        bt_next.setOnClickListener(this);
        bt_list.setOnClickListener(this);
        bt_exit.setOnClickListener(this);
    }

    private void findMyButton() {
        button_toTestAnimation = (ImageButton) findViewById(R.id.Button01);
        bt_last = (Button) findViewById(R.id.button_Last);
        bt_replay = (Button) findViewById(R.id.button_Replay);
        bt_next = (Button) findViewById(R.id.button_Next);
        bt_list = (Button) findViewById(R.id.button_List);
        bt_exit = (Button) findViewById(R.id.button_Exit);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        back_Menu = menu.add(0, this.Back_Menu_ID, 1, "上一个动画");
        next_Menu = menu.add(0, this.Next_Menu_ID, 2, "下一个动画");
        restart_Menu = menu.add(0, this.Restart_Menu_ID, 3, "重新播放");
        selsect_Menu = menu.add(0, this.Selsect_Menu_ID, 4, "选择动画");
        exit_Menu = menu.add(0, this.Exit_Menu_ID, 5, "退出");
        back_Menu.setIcon(R.drawable.ic_menu_back);
        next_Menu.setIcon(R.drawable.ic_menu_next);
        restart_Menu.setIcon(R.drawable.ic_menu_restart);
        selsect_Menu.setIcon(R.drawable.ic_menu_select);
        exit_Menu.setIcon(R.drawable.ic_power);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == this.Exit_Menu_ID) {
            finish();
        } else if (item.getItemId() == this.Selsect_Menu_ID) {
            Intent forIntent = new Intent();
            forIntent.setClass(myAnimation.this, MYListActivity.class);
            startActivityForResult(forIntent, requestCode);
        } else {
            switch (item.getItemId()) {
            case Back_Menu_ID: {
                toLastIndex();
            }
                break;
            case Next_Menu_ID: {
                toNextIndex();
            }
                break;
            default:
                break;
            }
            load_start_Animation(i);
        }
        return super.onOptionsItemSelected(item);
    }

    private void load_start_Animation(int i) {
        the_Animation_ID = ID[i];
        if (the_Animation_ID != 0) {
            animation = AnimationUtils.loadAnimation(this, the_Animation_ID);
            button_toTestAnimation.startAnimation(animation);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == this.requestCode) {
            if (resultCode == RESULT_OK) {
                try {
                    bundle = data.getExtras();
                    i = bundle.getInt("INDEX");
                    load_start_Animation(i);
                } catch (Exception e) {
                    Toast.makeText(this, "ERROR", Toast.LENGTH_LONG).show();
                }
            } else {
                Toast.makeText(this, "返回取消", Toast.LENGTH_LONG).show();
            }
        } else {
            Toast.makeText(this, "无返回!", Toast.LENGTH_LONG).show();
        }

    }

    public void onClick(View v) {
        if (v.equals(bt_exit)) {
            finish();
        } else if (v.equals(bt_list)) {
            Intent forIntent = new Intent();
            forIntent.setClass(myAnimation.this, MYListActivity.class);
            startActivityForResult(forIntent, requestCode);
        } else {
            switch (v.getId()) {
            case R.id.button_Last: {
                toLastIndex();
            }
                break;
            case R.id.button_Next: {
                toNextIndex();
            }
                break;
            default:
                break;
            }
            load_start_Animation(i);
        }
    }

    private void toLastIndex() {
        --i;
        if (i < 0) {
            i = ID.length - 1;
        }
    }

    private void toNextIndex() {
        ++i;
        if (i >= ID.length) {
            i = 0;
        }
    }
}
View Code

ListView布局文件xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/back" />
</LinearLayout>
View Code

ListView的Activity

package zyf.myAnimation;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

public class MYListActivity extends Activity implements OnItemClickListener,
        OnItemSelectedListener {
    private ListView mylist;
    private ArrayAdapter<String> arrayAdapter;
    private String[] contentString;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_layout);
        contentString = new String[] { 
                "示例", "透明动画",
                "伸缩动画", "移动动画",
                "旋转动画", "透明_伸缩",
                "透明_移动", "透明_旋转",
                "伸缩_移动","伸缩_旋转",
                "移动_旋转", "透明_伸缩_移动",
                "透明_伸缩_旋转", "透明_移动_旋转",
                "伸缩_移动_旋转",
                "透明_伸缩_移动_旋转", "myown_Design"
    };
        arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_single_choice,
                contentString);
        mylist = (ListView) findViewById(R.id.ListView01);
        mylist.setAdapter(arrayAdapter);
        mylist.setOnItemClickListener(this);
        mylist.setOnItemSelectedListener(this);
        mylist.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        return super.onOptionsItemSelected(item);
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int index, long arg3) {
        // TODO Auto-generated method stub
        Intent back_intent= new Intent();
        Bundle back_Bundle=new Bundle();
        
        back_Bundle.putInt("INDEX", index);    
        back_intent.putExtras(back_Bundle);
        setResult(RESULT_OK, back_intent);
        finish();
    }

    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        setTitle(arrayAdapter.getItem(arg2));
        mylist.setItemChecked(arg2, true);
    }

    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
}
View Code

 

 

R.anim.myanimation_simple,  "示例"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <scale
        android:duration="700"
        android:fillAfter="false"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.4"
        android:toYScale="0.6" />

    <set android:interpolator="@android:anim/decelerate_interpolator" >
        <scale
            android:duration="400"
            android:fillBefore="false"
            android:fromXScale="1.4"
            android:fromYScale="0.6"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="700"
            android:toXScale="0.0"
            android:toYScale="0.0" />

        <rotate
            android:duration="400"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="700"
            android:toDegrees="-45"
            android:toYScale="0.0" />
    </set>

</set>
View Code

 


R.anim.my_alpha_action,  "透明动画"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" />
    <!--
     透明度控制动画效果 alpha
        浮点型值:
        fromAlpha 属性为动画起始时透明度
        toAlpha   属性为动画结束时透明度
        说明: 
        0.0表示完全透明
        1.0表示完全不透明
                     以上值取0.0-1.0之间的float数据类型的数字
        
        长整型值:
        duration  属性为动画持续时间
        说明:     
                     时间以毫秒为单位
    -->

</set>
View Code

 


R.anim.my_scale_action,  "伸缩动画"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <scale
        android:duration="700"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.4"
        android:toYScale="1.4" />

</set><!--
     尺寸伸缩动画效果 scale

       属性:interpolator 指定一个动画的插入器
        
        在我试验过程中,使用android.res.anim中的资源时候发现有三种动画插入器
        
        accelerate_decelerate_interpolator  加速-减速 动画插入器
        accelerate_interpolator        加速-动画插入器
        decelerate_interpolator        减速- 动画插入器
        
                    其他的属于特定的动画效果
        
        
        浮点型值:
         
        fromXScale 属性为动画起始时 X坐标上的伸缩尺寸    
        toXScale   属性为动画结束时 X坐标上的伸缩尺寸     
        
        fromYScale 属性为动画起始时Y坐标上的伸缩尺寸    
        toYScale   属性为动画结束时Y坐标上的伸缩尺寸    
        
        说明:
                     以上四种属性值    
        
        0.0表示收缩到没有 
        1.0表示正常无伸缩     
                     值小于1.0表示收缩  
                     值大于1.0表示放大
        
        
        pivotX     属性为动画相对于物件的X坐标的开始位置
        pivotY     属性为动画相对于物件的Y坐标的开始位置
        
        说明:
                     以上两个属性值 从0%-100%中取值
        50%为物件的X或Y方向坐标上的中点位置
        
        长整型值:
        duration  属性为动画持续时间
        说明:     
                     时间以毫秒为单位
        
        
        布尔型值:
        fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
View Code

 


R.anim.my_translate_action,  "移动动画"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="2000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="-80"
        android:toYDelta="300" />
    <!--
     translate 位置转移动画效果
        整型值:
        fromXDelta 属性为动画起始时 X坐标上的位置    
        toXDelta   属性为动画结束时 X坐标上的位置
        
        fromYDelta 属性为动画起始时 Y坐标上的位置
        toYDelta   属性为动画结束时 Y坐标上的位置
        注意:
                     没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物 
                   
        
        长整型值:
        duration  属性为动画持续时间
        说明:     
                     时间以毫秒为单位
    -->

</set>
View Code

 


R.anim.my_rotate_action,  "旋转动画"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+350" />

    <!--
     rotate 旋转动画效果


       属性:interpolator 指定一个动画的插入器
        
        在我试验过程中,使用android.res.anim中的资源时候发现有三种动画插入器
        
        accelerate_decelerate_interpolator  加速-减速 动画插入器
        accelerate_interpolator        加速-动画插入器
        decelerate_interpolator        减速- 动画插入器
        
                    其他的属于特定的动画效果
                    
                    
        浮点数型值:
        
        fromDegrees 属性为动画起始时物件的角度    
        toDegrees   属性为动画结束时物件旋转的角度 可以大于360度   
        
        说明:
                     当角度为负数——表示逆时针旋转
                     当角度为正数——表示顺时针旋转   
                     
        (负数from——to正数:顺时针旋转)   
        (负数from——to负数:逆时针旋转) 
        (正数from——to正数:顺时针旋转) 
        (正数from——to负数:逆时针旋转)       
       
       
        pivotX     属性为动画相对于物件的X坐标的开始位置
        pivotY     属性为动画相对于物件的Y坐标的开始位置
                
        说明:
                     以上两个属性值 从0%-100%中取值
        50%为物件的X或Y方向坐标上的中点位置
            
        
        长整型值:
        duration  属性为动画持续时间
        说明:     
                     时间以毫秒为单位
    -->

</set>
View Code

 


R.anim.alpha_scale,  "透明_伸缩"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="500"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:repeatCount="0"
        android:toAlpha="1.0" >
    </alpha>

    <scale
        android:duration="500"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="0"
        android:startOffset="500"
        android:toXScale="0.5"
        android:toYScale="1.4" >
    </scale>

</set>
View Code

 


R.anim.alpha_translate,  "透明_移动"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="2000"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:repeatCount="0"
        android:toAlpha="1.0" >
    </alpha>

    <translate
        android:duration="2000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="-80"
        android:toYDelta="300" />

</set>
View Code

 


R.anim.alpha_rotate,  "透明_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:repeatCount="0"
        android:toAlpha="1.0" >
    </alpha>

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+350" />

</set>
View Code

 


R.anim.scale_translate,  "伸缩_移动"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <scale
        android:duration="2000"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="0"
        android:startOffset="300"
        android:toXScale="1.0"
        android:toYScale="1.0" >
    </scale>

    <translate
        android:duration="2000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="-80"
        android:toYDelta="250" />

</set>
View Code

 


R.anim.scale_rotate,  "伸缩_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <scale
        android:duration="3000"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="0"
        android:startOffset="300"
        android:toXScale="1.0"
        android:toYScale="1.0" >
    </scale>

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+355" />

</set>
View Code

 


R.anim.translate_rotate,  "移动_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="3000"
        android:fromXDelta="120"
        android:fromYDelta="30"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:toXDelta="110"
        android:toYDelta="50" />

    <rotate
        android:duration="5000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="800"
        android:toDegrees="+360" />

</set>
View Code

 


R.anim.alpha_scale_translate,  "透明_伸缩_移动"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:toAlpha="1.0" >
    </alpha>

    <scale
        android:duration="3000"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" >
    </scale>

    <translate
        android:duration="3000"
        android:fromXDelta="120"
        android:fromYDelta="30"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:toXDelta="30"
        android:toYDelta="250" />

</set>
View Code

 


R.anim.alpha_scale_rotate,  "透明_伸缩_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:toAlpha="1.0" >
    </alpha>

    <scale
        android:duration="3000"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" >
    </scale>

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+355" />

</set>
View Code

 


R.anim.alpha_translate_rotate,  "透明_移动_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:toAlpha="1.0" />

    <translate
        android:duration="3000"
        android:fromXDelta="120"
        android:fromYDelta="30"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:toXDelta="30"
        android:toYDelta="250" />

    <rotate
        android:duration="5000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="800"
        android:toDegrees="+360" />

</set>
View Code

 


R.anim.scale_translate_rotate,  "伸缩_移动_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <scale
        android:duration="3000"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" >
    </scale>

    <translate
        android:duration="3000"
        android:fromXDelta="120"
        android:fromYDelta="30"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:toXDelta="30"
        android:toYDelta="250" />

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+355" />

</set>
View Code

 


R.anim.alpha_scale_translate_rotate,  "透明_伸缩_移动_旋转"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:toAlpha="1.0" >
    </alpha>

    <scale
        android:duration="3000"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" >
    </scale>

    <translate
        android:duration="3000"
        android:fromXDelta="120"
        android:fromYDelta="30"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:toXDelta="30"
        android:toYDelta="250" />

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+360" />

</set>
View Code

 


R.anim.myown_design,  "myown_Design"

 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false" >
        <translate
            android:duration="800"
            android:fromYDelta="-100"
            android:interpolator="@android:anim/accelerate_interpolator"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toYDelta="0" >
        </translate>
    </set>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false" >
        <scale
            android:duration="400"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:interpolator="@android:anim/accelerate_interpolator"
            android:pivotX="50%"
            android:pivotY="100%"
            android:startOffset="790"
            android:toXScale="1.0"
            android:toYScale="0.3" >
        </scale>
    </set>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false" >
        <translate
            android:duration="400"
            android:fromYDelta="0"
            android:interpolator="@android:anim/decelerate_interpolator"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="1190"
            android:toYDelta="-60" >
        </translate>
    </set>

</set>
View Code

 

 DEMO完整下载路径:http://download.csdn.net/detail/androidsj/5529847

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/androidsj/archive/2013/06/06/3120778.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dianwei5413/article/details/102108193

智能推荐

我的世界Java版中怎么改名_我的世界怎么改名字 付/免费改名字教程-程序员宅基地

文章浏览阅读5.1k次。我的世界怎么改名字 付/免费改名字教程。那在我的世界中改名字还是非常费事儿的,那今天就教大家怎么改名字吧!想知道怎么改名字的玩家不妨进来看看哦!希望对大家有所帮助。游戏园我的世界官方群:325049520欢迎各路喜爱我的世界的小伙伴们加入讨论!打开一个文件夹,地址改成C:Users你的用户名AppDataLocalPackagesMicrosoft.MinecraftUWP_8wekyb3d8bb..._微软pcl怎么改名字

box-shadow 与 filter:drop-shadow 详解及技巧-程序员宅基地

文章浏览阅读88次。box-shadow 在前端的 CSS 编写工作想必十分常见。但是 box-shadow 除去它的常规用法,其实还存在许多不为人知的奇技淫巧。喜欢 markdown 版本的可以戳这里。box-shadow 常规用法说到 box-shadow ,首先想到的必然是它能够生成阴影,所以称之为 shaodow ,简单看看它的语法:基础属性语法box-sha..._filter: drop-shadow(100px 0 0 $bg-info);

VS2019/VS2017安装源离线下载,更新,清理,企业版与论坛版重复下载-程序员宅基地

文章浏览阅读959次。VS2019.NET Framework 4.8 SDKhttps://dotnet.microsoft.com/download/thank-you/net48-developer-pack.NET Core 3.0https://dotnet.microsoft.com/download/dotnet-core/3.0预览版需要在Options中的Environment..._vs2017安装下载缓存怎么清除

互联网大脑的情绪,智商和梦境-互联网神经学系列第四篇_"互联网大脑如何产生\"梦境\"并形成元宇宙"-程序员宅基地

文章浏览阅读1.3k次。既然互联网正在形成与人类大脑高度相似的组织结构,那么互联网也应该具备心理学现象,显示出喜怒哀乐情绪,智商,知觉、认知,智商等现象。互联网神经心理学(Internet neuropsychology)就是从互联网的类神经结构角度分析互联网大脑的心理学问题,研究互联网是如何反映现实世界信息,如何反映社会关系,如何产生属于互联网大脑的类心理活动。_"互联网大脑如何产生\"梦境\"并形成元宇宙"

安装成功了的ros系统,突然提示未安装ros_catkin : 依赖: python-catkin-pkg 但是它将不会被安装 e: 无法修正错误-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏18次。之前一直用的好好的ros-kinetic,今天输入roscore..提示未安装,试了其他指令,也是未安装 百度了一下没找到同样的问题,记录一下ada@ada-HP-Spectre-x360-Convertible-13-ae0xx:~$ roscore程序“roscore”尚未安装。 您可以使用以下命令安装:sudo apt install python-roslaunch首先想..._catkin : 依赖: python-catkin-pkg 但是它将不会被安装 e: 无法修正错误,因为您要

sql中如何计算百分比 ,并保留两位小数_sql计算百分比保留两位小数-程序员宅基地

文章浏览阅读5.9w次,点赞3次,收藏24次。SELECT CONCAT(CONVERT(COUNT(DISTINCT a)*100/COUNT(DISTINCT b),DECIMAL(18,2)),'%') AS [百分比] FROM 表名CONCAT('a/b','%')代表拼接%decimal(18, 2) 代表截取两位位小数_sql计算百分比保留两位小数

随便推点

Pycharm下载与安装教程_pycharm 下载-程序员宅基地

文章浏览阅读5.6w次,点赞84次,收藏551次。PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境)​ PyCharm拥有一般IDE具备的功能,比如, 调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制_pycharm 下载

web开发中,后台数据获取到了,前端显示不出来_java-web能拿到数据库内的数据但是不能显示在前端-程序员宅基地

文章浏览阅读2.3w次,点赞12次,收藏13次。一开始我以为是后台没有获取到数据,写了几个输出语句测试发现数据是能获取到的,那就是显示的问题,检查了各个属性发现都是对的,后来突然发现我的遍历显示的地方出现了警告,这才注意到,忘记加<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>加了之后立马就显示正常了。..._java-web能拿到数据库内的数据但是不能显示在前端

【渝粤教育】广东开放大学 中国文化文学通论 形成性考核 (25)_《采薇》曾被古人视为《诗经》中最好的篇章。-程序员宅基地

文章浏览阅读341次。选择题题目:《楚辞》是《诗经》以外先秦诗歌的另一部总集。题目:知我者,回答题目:《采薇》曾被古人视为《诗经》中最好的篇章。题目:“楚辞”是战国时期产生于蜀地的一种诗歌样式。题目:《颂》诗包括《周颂》、《鲁颂》和《齐颂》。题目:若有人兮山之阿,回答题目:身既死兮神以灵,回答题目:回答题目:回答题目:《楚辞》是我国古代第一部诗歌总集。题目:“楚辞”最为明显的特征是带有“兮”字的三字句或四字句。题目:宋玉是除屈原以外创作成就最高的“楚辞”作家。题目:回答题目:《诗经》分为《风》、《雅》_《采薇》曾被古人视为《诗经》中最好的篇章。

Solaris 初步设置(转)-程序员宅基地

文章浏览阅读1.3k次。Solaris 初步设置(转)  简介  这篇文档包含了你用solaris和Sun平台工作时所需要的最重要的20%的技术。它能处理你所遇到的80%的问题。  这篇文档并不打算覆盖Solaris处理环境的细节,也不会包..._solaris11 dev/dsk

常见经典目标检测算法-程序员宅基地

文章浏览阅读1.1k次,点赞41次,收藏9次。R-CNN大大提升了目标检测的精度,但速度很慢。此后,Fast R-CNN和Faster R-CNN对原始R-CNN进行了改进,Faster R-CNN通过RPN网络学习提取候选区域,实现了端到端的目标检测。近年来,目标检测技术不断进步,涌现出了许多新的算法和模型,如RetinaNet、RefineDet、CenterNet等,进一步提升了目标检测的精度和效率,使得目标检测在越来越多的应用场景中得到应用。多年来,研究者们提出了许多经典的目标检测算法,下面我们就来介绍几种常见的经典目标检测算法。

vue 事件修饰符_v-on:submit.prevent-程序员宅基地

文章浏览阅读125次。事件修饰符在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。尽管我们可以在 methods 中轻松实现这点,但更好的方式是:methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。为了解决这个问题, Vue.js 为 v-on 提供了 事件修饰符。通过由点(.)表示的指令后缀来调用修饰符。..._v-on:submit.prevent

推荐文章

热门文章

相关标签