zoukankan      html  css  js  c++  java
  • Android之仿iphone抖动效果

    转自:http://blog.csdn.net/long33long/article/details/7693671

    布局文件:

    <?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"
        android:orientation="vertical" >
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv0"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv1"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv2"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv3"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
        </LinearLayout>
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv4"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv5"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv6"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv7"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv8"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv9"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv10"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv11"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
        </LinearLayout>
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv12"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv13"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv14"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv15"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
        </LinearLayout>
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv16"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv17"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv18"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
            <TextView
                android:id="@+id/tv19"
                android:layout_width="80dip"
                android:layout_height="94dip"
                android:drawableTop="@drawable/ic_launcher"
                android:text="@string/hello" />
        </LinearLayout>
    
    </LinearLayout>

    代码:

    package com.android.shake;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.DisplayMetrics;
    import android.view.animation.Animation;
    import android.view.animation.Animation.AnimationListener;
    import android.view.animation.RotateAnimation;
    import android.widget.TextView;
    import android.view.View;
    import android.view.Window;
    
    public class ShakeTestActivity extends Activity implements View.OnClickListener {
        private TextView mtv0;
        private TextView mtv1;
        private TextView mtv2;
        private TextView mtv3;
        private TextView mtv4;
        private TextView mtv5;
        private TextView mtv6;
        private TextView mtv7;
        private TextView mtv8;
        private TextView mtv9;
        private TextView mtv10;
        private TextView mtv11;
        private TextView mtv12;
        private TextView mtv13;
        private TextView mtv14;
        private TextView mtv15;
        private TextView mtv16;
        private TextView mtv17;
        private TextView mtv18;
        private TextView mtv19;
    
        private boolean mNeedShake = false;
        private boolean mStartShake = false;
    
        private static final int ICON_WIDTH = 80;
        private static final int ICON_HEIGHT = 94;
        private static final float DEGREE_0 = 1.8f;
        private static final float DEGREE_1 = -2.0f;
        private static final float DEGREE_2 = 2.0f;
        private static final float DEGREE_3 = -1.5f;
        private static final float DEGREE_4 = 1.5f;
        private static final int ANIMATION_DURATION = 80;
    
        private int mCount = 0;
    
        float mDensity;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.main);
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            if (dm != null) {
                mDensity = dm.density;
            }
            mtv0 = (TextView) findViewById(R.id.tv0);
            mtv0.setOnClickListener(this);
            mtv1 = (TextView) findViewById(R.id.tv1);
            mtv1.setOnClickListener(this);
            mtv2 = (TextView) findViewById(R.id.tv2);
            mtv2.setOnClickListener(this);
            mtv3 = (TextView) findViewById(R.id.tv3);
            mtv3.setOnClickListener(this);
            mtv4 = (TextView) findViewById(R.id.tv4);
            mtv4.setOnClickListener(this);
            mtv5 = (TextView) findViewById(R.id.tv5);
            mtv5.setOnClickListener(this);
            mtv6 = (TextView) findViewById(R.id.tv6);
            mtv6.setOnClickListener(this);
            mtv7 = (TextView) findViewById(R.id.tv7);
            mtv7.setOnClickListener(this);
            mtv8 = (TextView) findViewById(R.id.tv8);
            mtv8.setOnClickListener(this);
            mtv9 = (TextView) findViewById(R.id.tv9);
            mtv9.setOnClickListener(this);
            mtv10 = (TextView) findViewById(R.id.tv10);
            mtv10.setOnClickListener(this);
            mtv11 = (TextView) findViewById(R.id.tv11);
            mtv11.setOnClickListener(this);
            mtv12 = (TextView) findViewById(R.id.tv12);
            mtv12.setOnClickListener(this);
            mtv13 = (TextView) findViewById(R.id.tv13);
            mtv13.setOnClickListener(this);
            mtv14 = (TextView) findViewById(R.id.tv14);
            mtv14.setOnClickListener(this);
            mtv15 = (TextView) findViewById(R.id.tv15);
            mtv15.setOnClickListener(this);
            mtv16 = (TextView) findViewById(R.id.tv16);
            mtv16.setOnClickListener(this);
            mtv17 = (TextView) findViewById(R.id.tv17);
            mtv17.setOnClickListener(this);
            mtv18 = (TextView) findViewById(R.id.tv18);
            mtv18.setOnClickListener(this);
            mtv19 = (TextView) findViewById(R.id.tv19);
            mtv19.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
    
            if (!mStartShake) {
                mStartShake = true;
                mNeedShake = true;
                shakeAnimation(mtv0);
                shakeAnimation(mtv1);
                shakeAnimation(mtv2);
                shakeAnimation(mtv3);
                shakeAnimation(mtv4);
                shakeAnimation(mtv5);
                shakeAnimation(mtv6);
                shakeAnimation(mtv7);
                shakeAnimation(mtv8);
                shakeAnimation(mtv9);
                shakeAnimation(mtv10);
                shakeAnimation(mtv11);
                shakeAnimation(mtv12);
                shakeAnimation(mtv13);
                shakeAnimation(mtv14);
                shakeAnimation(mtv15);
                shakeAnimation(mtv16);
                shakeAnimation(mtv17);
                shakeAnimation(mtv18);
                shakeAnimation(mtv19);
            }
        }
    
        private void shakeAnimation(final View v) {
            float rotate = 0;
            int c = mCount++ % 5;
            if (c == 0) {
                rotate = DEGREE_0;
            } else if (c == 1) {
                rotate = DEGREE_1;
            } else if (c == 2) {
                rotate = DEGREE_2;
            } else if (c == 3) {
                rotate = DEGREE_3;
            } else {
                rotate = DEGREE_4;
            }
            final RotateAnimation mra = new RotateAnimation(rotate, -rotate, ICON_WIDTH * mDensity / 2, ICON_HEIGHT * mDensity / 2);
            final RotateAnimation mrb = new RotateAnimation(-rotate, rotate, ICON_WIDTH * mDensity / 2, ICON_HEIGHT * mDensity / 2);
    
            mra.setDuration(ANIMATION_DURATION);
            mrb.setDuration(ANIMATION_DURATION);
    
            mra.setAnimationListener(new AnimationListener() {
                @Override
                public void onAnimationEnd(Animation animation) {
                    if (mNeedShake) {
                        mra.reset();
                        v.startAnimation(mrb);
                    }
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
    
                }
    
                @Override
                public void onAnimationStart(Animation animation) {
    
                }
    
            });
    
            mrb.setAnimationListener(new AnimationListener() {
                @Override
                public void onAnimationEnd(Animation animation) {
                    if (mNeedShake) {
                        mrb.reset();
                        v.startAnimation(mra);
                    }
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
    
                }
    
                @Override
                public void onAnimationStart(Animation animation) {
    
                }
    
            });
            v.startAnimation(mra);
        }
    
        @Override
        public void onBackPressed() {
            if (!mNeedShake) {
                super.onBackPressed();
            } else {
                mNeedShake = false;
                mCount = 0;
                mStartShake = false;
            }
        }
    }

    资源下载:http://download.csdn.net/detail/long33long/4395746

  • 相关阅读:
    wcf 配置
    一般处理程序问题重命名后问题
    jQuery取得select选择的文本与值
    C# 读取excel
    ajax 跨域问题
    java转义字符
    oracle日期时间的加减法
    在MyEclipse中,jsp文件输入中文,文件不能保存
    转自JavaEye Oracle函数大全
    转Oracle数据类型及存储方式【F】
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/3583091.html
Copyright © 2011-2022 走看看