zoukankan      html  css  js  c++  java
  • android 旋转按钮和旋转变化动画

     RotateAnimation类:旋转变化动画类

    RotateAnimation类是Android系统中的旋转变化动画类,用于控制View对象的旋转动作,该类继承于Animation类。RotateAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是RotateAnimation构造方法。

    【基本语法】public RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

    参数说明

    fromDegrees:旋转的开始角度。

    toDegrees:旋转的结束角度。

    pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

    pivotXValue:X坐标的伸缩值。

    pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

    pivotYValue:Y坐标的伸缩值。

    【实例演示】下面通过代码来演示如何设置一个简单的旋转变化动画效果。

    1. public class firstActivity extends Activity {  
    2. /** Called when the activity is first created. */  
    3. @Override  
    4. public void onCreate(Bundle savedInstanceState) {           //重载onCreate方法  
    5.     super.onCreate(savedInstanceState);  
    6.     setContentView(R.layout.main);  
    7.  
    8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
    9.     Button btn1=(Button)findViewById(R.id.button1);         //按钮对象  
    10.     Button btn2=(Button)findViewById(R.id.button2);  
    11.     final Animation rotateAnimation = new       
    12.      RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);  
    13.                                                         //设置旋转变化动画对象  
    14.     btn1.setOnClickListener(new View.OnClickListener() {        //设置监听器  
    15.           
    16.         @Override  
    17.         public void onClick(View v) {  
    18.             // TODO Auto-generated method stub  
    19.             rotateAnimation.setDuration(3000);              //持续时间  
    20.             image.setAnimation(rotateAnimation);            //设置动画  
    21.             rotateAnimation.startNow();                 //启动动画  
    22.         }  
    23.     });  
    24.     btn2.setOnClickListener(new View.OnClickListener() {        //设置监听器  
    25.           
    26.         @Override  
    27.         public void onClick(View v) {  
    28.             // TODO Auto-generated method stub  
    29.             rotateAnimation.cancel();                       //取消动画执行  
    30.         }  
    31.     });  
    32. }  
    33. }  

    在这段代码中,首先通过RotateAnimation构造方法创建了一个旋转变化的动画对象。然后,在第一个按钮监听器中设置了动画的持续时间,之后启动该动画。在第二个按钮监听器中取消该动画。读者运行这段代码,将看到图片沿如图9.8所示的方向进行旋转。

     RotateAnimation类:旋转变化动画类

    RotateAnimation类是Android系统中的旋转变化动画类,用于控制View对象的旋转动作,该类继承于Animation类。RotateAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是RotateAnimation构造方法。

    【基本语法】public RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

    参数说明

    fromDegrees:旋转的开始角度。

    toDegrees:旋转的结束角度。

    pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

    pivotXValue:X坐标的伸缩值。

    pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

    pivotYValue:Y坐标的伸缩值。

    【实例演示】下面通过代码来演示如何设置一个简单的旋转变化动画效果。

    1. public class firstActivity extends Activity {  
    2. /** Called when the activity is first created. */  
    3. @Override  
    4. public void onCreate(Bundle savedInstanceState) {           //重载onCreate方法  
    5.     super.onCreate(savedInstanceState);  
    6.     setContentView(R.layout.main);  
    7.  
    8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
    9.     Button btn1=(Button)findViewById(R.id.button1);         //按钮对象  
    10.     Button btn2=(Button)findViewById(R.id.button2);  
    11.     final Animation rotateAnimation = new       
    12.      RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);  
    13.                                                         //设置旋转变化动画对象  
    14.     btn1.setOnClickListener(new View.OnClickListener() {        //设置监听器  
    15.           
    16.         @Override  
    17.         public void onClick(View v) {  
    18.             // TODO Auto-generated method stub  
    19.             rotateAnimation.setDuration(3000);              //持续时间  
    20.             image.setAnimation(rotateAnimation);            //设置动画  
    21.             rotateAnimation.startNow();                 //启动动画  
    22.         }  
    23.     });  
    24.     btn2.setOnClickListener(new View.OnClickListener() {        //设置监听器  
    25.           
    26.         @Override  
    27.         public void onClick(View v) {  
    28.             // TODO Auto-generated method stub  
    29.             rotateAnimation.cancel();                       //取消动画执行  
    30.         }  
    31.     });  
    32. }  
    33. }  

    在这段代码中,首先通过RotateAnimation构造方法创建了一个旋转变化的动画对象。然后,在第一个按钮监听器中设置了动画的持续时间,之后启动该动画。在第二个按钮监听器中取消该动画。读者运行这段代码,将看到图片沿如图9.8所示的方向进行旋转。

    转自:http://book.51cto.com/art/201204/328298.htm

    tip:旋转之后图片如何停留在原来的位置

    这个类别做动态按钮之类不太好,不太智能; 做动态按钮的时候可以用android自带的重力传感器来做按钮

     

    mManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);    
            mSensor = mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
            hasSurface = false;
            inactivityTimer = new InactivityTimer(this);    
            
            mListener = new SensorEventListener() {    
                public void onAccuracyChanged(Sensor sensor, int accuracy) {    
                }   
                
                public void onSensorChanged(SensorEvent event) {    
                    float x = event.values[SensorManager.DATA_X];    
                    float y = event.values[SensorManager.DATA_Y];    
                    float z = event.values[SensorManager.DATA_Z];                  
                    Relayout(x, y, z);    
                }    
            }; 
    
    
    
    protected void Relayout(float x, float y, float z){
             final Resources r = getResources();
             Drawable drawable;
            if(x > -2.5 && x <= 2.5 && y > 7.5 && y <= 10  ){                     
                
                drawable = r.getDrawable(R.drawable.buttond2);    
                ImageButton button_2 = (ImageButton)findViewById(R.id.button3);
                button_2.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button4);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel2);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond2);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause2);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go2);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if(x > 2.5 && x <= 7.5 && y > 2.5 && y <= 7.5){
                drawable = r.getDrawable(R.drawable.buttond1);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel1);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond1);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause1);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go1);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if(x > 7.5 && x <= 10 && y > -2.5 && y <= 2.5){
                drawable = r.getDrawable(R.drawable.buttond);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if(x > 2.5 && x <= 7.5 && y > -7.5 && y <= -2.5){
                drawable = r.getDrawable(R.drawable.buttond7);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel7);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond7);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause7);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go7);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if(x > -2.5 && x <= 2.5 && y > -10 && y <= -7.5){
                drawable = r.getDrawable(R.drawable.buttond6);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel6);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond6);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause6);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go6);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if((x > -7.5 && x <= -2.5 && y > -7.5 && y <= -2.5)){
                drawable = r.getDrawable(R.drawable.buttond5);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel5);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond5);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause5);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go5);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if(x > -10 && x <= -7.5 && y > -2.5 && y < 2.5){
                drawable = r.getDrawable(R.drawable.buttond4);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel4);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond4);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause4);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go4);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
            if(x > -7.5 && x <= -2.5 && y > 2.5 && y <= 7.5 ){
                drawable = r.getDrawable(R.drawable.buttond3);             
                ImageButton button_1 = (ImageButton)findViewById(R.id.button4);
                button_1.setImageDrawable(drawable);
                ImageButton button_3 = (ImageButton)findViewById(R.id.button3);
                button_3.setImageDrawable(drawable);
                ImageButton button_cancel = (ImageButton)findViewById(R.id.cancel);
                drawable = r.getDrawable(R.drawable.cancel3);
                button_cancel.setImageDrawable(drawable);
                
                ImageButton button_pause = (ImageButton)findViewById(R.id.pause);
                pauseflag = global.GetPauseFlag();
                drawable = r.getDrawable(R.drawable.buttond3);
                switch(pauseflag){
                case 0:
                    drawable = r.getDrawable(R.drawable.pause3);
                    break;
                case 1:
                    drawable = r.getDrawable(R.drawable.go3);
                    break;
                }    
                button_pause.setImageDrawable(drawable);
            }
        }

     其实这个真的做一般应用的旋转按钮并不好,因为不能控制它在固定角度停止,所以最好的办法,还是使用重力传感器的监听比较好,实现简单,运行也流畅。强烈推荐~

    Crazy Cherry:everything is possible!
  • 相关阅读:
    shell脚本按当前日期输出日志
    bat弹出确认或取消窗口
    bat脚本输出日志
    北京浩赢科技有限公司与好宝多多
    bat延迟执行脚本,利用choice实现定时执行功能
    centos下安装tunctl
    OpenStack Train版 简单部署流程(4)- octavia
    LVM基础
    OpenStack Train版 简单部署流程(3)- ceilometer
    openstack stein
  • 原文地址:https://www.cnblogs.com/userbibi/p/2663317.html
Copyright © 2011-2022 走看看