zoukankan      html  css  js  c++  java
  • Android 动画-alpha(渐变透明度动画效果)

      今天苦于思索应用如何美观,首先从载入页面的第一眼开始,Android动画分为四种:alpha(渐变透明度),scale(渐变尺寸伸缩),translate(画面转换位置移动),rotate(画面转移旋转);今天先写第一个动画alpha。

      动画效果有两种实现:

      一、在xml中定义:

      alpha.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 透明度控制动画效果 alpha
                浮点型值:
                    fromAlpha 属性为动画起始时透明度
                    toAlpha   属性为动画结束时透明度
                            说明: 
                        0.0表示完全透明
                        1.0表示完全不透明
                            以上值取0.0-1.0之间的float数据类型的数字
        
                长整型值:
                    duration  属性为动画持续时间
                            说明:     
                                时间以毫秒为单位
        -->
        
        <alpha 
            android:fromAlpha="0.1"
            android:toAlpha="1.0"
            android:duration="5000"
            />
        
    </set>

      二、在页面Activity中声明:

    Animation animation = new AlphaAnimation(0.1f, 1.0f);
    animation.setDuration(5000);

    完成动画渐变透明度的参数设定后,我们就要开始在应用中使用它:

    public class SplashActivity extends Activity{
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.welcome);
            
            View view  = View.inflate(SplashActivity.this, R.layout.welcome, null);
            setContentView(view);
            //动画效果参数直接定义
            Animation animation = new AlphaAnimation(0.1f, 1.0f);
            animation.setDuration(5000);
            
            //动画效果从XMl文件中定义
    //        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
            view.setAnimation(animation);
        }
    }

    这样我们就完成了预定的动画效果,但是我们的最终目的是动画效果完毕以后跳转到相应的页面,所以我们对动画添加了监听:

    animation.setAnimationListener(new AnimationListener() {
                
                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                    startActivity(intent);
                }
            });

    这样的话,我们在动画的持续时间中预加载我们的资源,当动画结束以后跳转到我们的主页面;

    代码:http://pan.baidu.com/share/link?shareid=222077530&uk=3909095065

    今天想做一个类似于人人的效果,实现目标为:背景图渐变,下方的文本框不随之渐变

    目标图:

    XML布局代码 :activity_main.xml

    <merge xmlns:android="http://schemas.android.com/apk/res/android">
        <ImageView  
            android:id="@+id/backImage"
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            android:scaleType="center"
            android:background="@drawable/v5_3_0_guide_pic3" />
        <TextView
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginBottom="20dip"
            android:layout_gravity="center_horizontal|bottom"
            android:padding="12dip"
            android:background="#AA000000"
            android:textColor="#ffffffff"
            android:text="Golden Gate" />
    </merge>

    主页面Activity代码:MainActivity.java

    public class MainActivity extends Activity {
    
        ImageView image;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            image = (ImageView) findViewById(R.id.backImage);
    //        View view  = View.inflate(MainActivity.this, R.id.backImage, null);
            //动画效果参数直接定义
            Animation animation = new AlphaAnimation(0.1f, 1.0f);
            animation.setDuration(5000);
            
            //动画效果从XMl文件中定义
    //        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
            image.setAnimation(animation);
            animation.setAnimationListener(new AnimationListener() {
                
                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
    //                Intent intent = new Intent(MainActivity.this,MainActivity.class);
    //                startActivity(intent);
                }
            });
        }
    
        @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;
        }
    
    }

    目的达到了,源码:http://pan.baidu.com/share/link?shareid=1973122666&uk=3909095065

  • 相关阅读:
    【经验总结】- IDEA无法显示Project目录怎么办
    JSON API免费接口(转)
    电子商务(电销)平台中订单模块(Order)数据库设计明细(转)
    typora 快捷键
    table 随td固宽
    跨域请求
    在网址前加神秘字母,让你打开新世界(z)
    vux安装中遇到的坑(转)
    常用正则表达示
    mui 浏览器一样自动缩放
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3167581.html
Copyright © 2011-2022 走看看