类似于小球一样的,下弹 在跳起来的功能

来源:互联网 发布:手淘宝网 编辑:程序博客网 时间:2024/06/05 12:17

xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/abc_list_focused_holo"
        />


</RelativeLayout>



java中

package com.test.qq.wk.myapplication;



import android.animation.ValueAnimator;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.DisplayMetrics;
import android.view.animation.BounceInterpolator;
import android.widget.ImageView;




public class MainActivity extends ActionBarActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Activity activity=this;
        setContentView(R.layout.activity_main);
        final ImageView imageView = (ImageView)findViewById(R.id.imageView);
        //getDisplaySize(activity)[1] - (200 * getDensity(activity))这个是屏幕的高度 - imageview的高度 在这里调下降的高度
        ValueAnimator animator = ValueAnimator.ofFloat(0, getDisplaySize(activity)[1] - (200 * getDensity(activity))
                - imageView.getHeight());
        animator.setTarget(imageView);
        animator.setDuration(3000).start();
        animator.setInterpolator(new BounceInterpolator());
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                imageView.setTranslationY((Float) animation.getAnimatedValue());
            }
        });


    }
    /**
     * 获取屏幕宽高
     *
     * @param context
     * @return
     */

    public static int[] getDisplaySize(Context context) {

        DisplayMetrics dm = new DisplayMetrics();

  //dm = context.getResources().getDisplayMetrics();  和getWindowManager().getDefaultDisplay().getMetrics(dm);效果一样  都可以 都是 获取到 DisplayMetrics的大部分

//信息

        dm = context.getResources().getDisplayMetrics();

        int[] screen = new int[]{dm.widthPixels, dm.heightPixels};
        return screen;
    }


    /**
     * 获取屏幕密度
     *
     * @param context
     * @return
     */
    public static float getDensity(Context context) {
        DisplayMetrics dm = new DisplayMetrics();
        dm = context.getResources().getDisplayMetrics();
        return dm.density;
    }
}
0 0