zoukankan      html  css  js  c++  java
  • android 属性动画

    package com.example.ceshi;
    
    
    
    import android.os.Build;
    import android.os.Bundle;
    import android.animation.IntEvaluator;
    import android.animation.ObjectAnimator;
    import android.animation.ValueAnimator;
    import android.animation.ValueAnimator.AnimatorUpdateListener;
    import android.annotation.SuppressLint;
    import android.annotation.TargetApi;
    import android.app.Activity;
    import android.util.Log;
    import android.view.Gravity;
    import android.view.KeyEvent;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnKeyListener;
    import android.view.ViewTreeObserver.OnPreDrawListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    @SuppressLint("NewApi")
    public class MainActivity extends Activity  {
        public Webservice webServiceManager;
        private EditText indata;
        private TextView show;
        private Button click;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            indata = (EditText)findViewById(R.id.indata);
            show = (TextView)findViewById(R.id.show);    
            
            click = (Button)findViewById(R.id.click);
            click.setOnClickListener(new Click1());    
            
        }
        
        
    
    
        @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            // TODO Auto-generated method stub
            Log.e("---","onWindowFocusChanged"+click.getLayoutParams().width);
            super.onWindowFocusChanged(hasFocus);
        }
    
    
    
    
        //自定义toast 弹出的位置
        class Click1 implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                Toast toast = Toast.makeText(getApplicationContext(), "自定义位置", Toast.LENGTH_LONG);
                //居中
                toast.setGravity(Gravity.CENTER, 0, 0);
                
                toast.show();
                performAnimate2(click, click.getWidth(), 500);
                performAnimate3(click, click.getHeight(), 200);
            }
            
        }
        
        //自定义toast 弹出的位置带有图片的
            class Click2 implements OnClickListener{
    
                @Override
                public void onClick(View v) {
                    Toast toast = Toast.makeText(getApplicationContext(), "自定义位置", Toast.LENGTH_LONG);
                    //居中
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    LayoutInflater inflater=  LayoutInflater.from(MainActivity.this);
                    View view = inflater.inflate(R.layout.add, null);
                    toast.setView(view);
                    toast.show();
                }
                
            }
        
    
        @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;
        }
    
        private void performAnimate() {  
            ViewWrapper wrapper = new ViewWrapper(click);  
            ObjectAnimator.ofInt(wrapper, "width", 500).setDuration(5000).start();  
            ObjectAnimator.ofInt(wrapper, "width", 120).setDuration(5000).start(); 
        }  
    
        
        private static class ViewWrapper {  
            private View mTarget;  
          
            public ViewWrapper(View target) {  
                mTarget = target;  
            }  
          
            public int getWidth() {  
                Log.e("---","---->>>>>"+mTarget.getLayoutParams().width);
                return mTarget.getLayoutParams().width;  
            }  
          
            public void setWidth(int width) {  
                mTarget.getLayoutParams().width = width;  
                mTarget.requestLayout();  
            }  
        }
        
        private void performAnimate2(final View target, final int start, final int end) {  
            ValueAnimator valueAnimator = ValueAnimator.ofInt(1, 100);  
          
            valueAnimator.addUpdateListener(new AnimatorUpdateListener() {  
          
                //持有一个IntEvaluator对象,方便下面估值的时候使用  
                private IntEvaluator mEvaluator = new IntEvaluator();  
          
                @Override  
                public void onAnimationUpdate(ValueAnimator animator) {  
                    //获得当前动画的进度值,整型,1-100之间  
                    int currentValue = (Integer)animator.getAnimatedValue();  
                    Log.e("----", "current value: " + currentValue);  
          
                    //计算当前进度占整个动画过程的比例,浮点型,0-1之间  
                    float fraction = currentValue / 100f;  
          
                    //这里我偷懒了,不过有现成的干吗不用呢  
                    //直接调用整型估值器通过比例计算出宽度,然后再设给Button  
                    target.getLayoutParams().width = mEvaluator.evaluate(fraction, start, end);  
                    target.requestLayout();  
                }  
            });  
          
            valueAnimator.setDuration(5000).start();  
        }  
        private void performAnimate3(final View target, final int start, final int end) {  
            ValueAnimator valueAnimator = ValueAnimator.ofInt(1, 100);  
          
            valueAnimator.addUpdateListener(new AnimatorUpdateListener() {  
          
                //持有一个IntEvaluator对象,方便下面估值的时候使用  
                private IntEvaluator mEvaluator = new IntEvaluator();  
          
                @Override  
                public void onAnimationUpdate(ValueAnimator animator) {  
                    //获得当前动画的进度值,整型,1-100之间  
                    int currentValue = (Integer)animator.getAnimatedValue();  
                    Log.e("----", "current value: " + currentValue);  
          
                    //计算当前进度占整个动画过程的比例,浮点型,0-1之间  
                    float fraction = currentValue / 100f;  
          
                    //这里我偷懒了,不过有现成的干吗不用呢  
                    //直接调用整型估值器通过比例计算出宽度,然后再设给Button  
                    target.getLayoutParams().height = mEvaluator.evaluate(fraction, start, end);  
                    target.requestLayout();  
                }  
            });  
          
            valueAnimator.setDuration(5000).start();  
        }  
    }

    来自 : http://blog.csdn.net/singwhatiwanna/article/details/17841165

  • 相关阅读:
    HBase利用observer(协处理器)创建二级索引
    hbase系列-Hbase热点问题、数据倾斜和rowkey的散列设计
    大数据项目实战之新闻话题的实时统计分析
    kafka&&sparkstreaming整合入门之Wordcount
    项目总结
    JAVA实现阿里云接口完成短信验证
    Java中的23种设计模式之——适配器Adapter模式(2)
    Java中的23种设计模式之——单例模式(1)
    ElasticSearch使用ElasticsearchTemplate整合spring
    ElasticSearch安装和基本使用(1)
  • 原文地址:https://www.cnblogs.com/lihaolihao/p/3534744.html
Copyright © 2011-2022 走看看