Android中的Tinder app动画(拖放视图或布局)

时间:2013-12-24 07:54:00

标签: android animation drag-and-drop

我想像拖放一样拖放像Tinder App这样的布局。怎么做?请回复我。 For like picture Unlike Picture

解决

步骤2.像MainActivity.java一样为拖放视图创建活动

package com.example.dragdropviewdemo;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;

public class MainActivity extends Activity {
int windowwidth;
int screenCenter;
int x_cord, y_cord;
int Likes = 0;
RelativeLayout parentView;
float alphaValue = 0;

@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainlayout);
    parentView = (RelativeLayout) findViewById(R.id.layoutview);
    windowwidth = getWindowManager().getDefaultDisplay().getWidth();
    screenCenter = windowwidth / 2;
    int[] myImageList = new int[] { R.drawable.event1, R.drawable.event2,
            R.drawable.event3, R.drawable.event4, R.drawable.event5,
            R.drawable.event6 };
    for (int i = 0; i < 6; i++) {
        final RelativeLayout myRelView = new RelativeLayout(this);
        myRelView
                .setLayoutParams(new LayoutParams((windowwidth - 80), 300));
        myRelView.setX(40);
        myRelView.setY(40);
        myRelView.setTag(i);
        myRelView.setBackgroundResource(myImageList[i]);

        if (i == 0) {
            myRelView.setRotation(-1);
        } else if (i == 1) {
            myRelView.setRotation(-5);

        } else if (i == 2) {
            myRelView.setRotation(3);

        } else if (i == 3) {
            myRelView.setRotation(7);

        } else if (i == 4) {
            myRelView.setRotation(-2);

        } else if (i == 5) {
            myRelView.setRotation(5);

        }

        final Button imageLike = new Button(this);
        imageLike.setLayoutParams(new LayoutParams(100, 50));
        imageLike.setBackgroundDrawable(getResources().getDrawable(
                R.drawable.stamp_liked));
        imageLike.setX(20);
        imageLike.setY(80);
        imageLike.setAlpha(alphaValue);
        imageLike.setOnClickListener(new OnClickListener() {

           @Override
           public void onClick(View v) {

            //your like action code write here 
           }
          });
        myRelView.addView(imageLike);

        final Button imagePass = new Button(this);
        imagePass.setLayoutParams(new LayoutParams(100, 50));
        imagePass.setBackgroundDrawable(getResources().getDrawable(
                R.drawable.pass));

        imagePass.setX((windowwidth - 200));
        imagePass.setY(100);
        imagePass.setRotation(45);
        imagePass.setAlpha(alphaValue);
        imagePass.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {

            //your pass action code write here 
            }
         });
        myRelView.addView(imagePass);

        myRelView.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                x_cord = (int) event.getRawX();
                y_cord = (int) event.getRawY();

                myRelView.setX(x_cord - screenCenter + 40);
                myRelView.setY(y_cord - 150);
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    break;
                case MotionEvent.ACTION_MOVE:
                    x_cord = (int) event.getRawX();
                    y_cord = (int) event.getRawY();
                    myRelView.setX(x_cord - screenCenter + 40);
                    myRelView.setY(y_cord - 150);
                    if (x_cord >= screenCenter) {
                        myRelView
                                .setRotation((float) ((x_cord - screenCenter) * (Math.PI / 32)));
                        if (x_cord > (screenCenter + (screenCenter / 2))) {
                            imageLike.setAlpha(1);
                            if (x_cord > (windowwidth - (screenCenter / 4))) {
                                Likes = 2;
                            } else {
                                Likes = 0;
                            }
                        } else {
                            Likes = 0;
                            imageLike.setAlpha(0);
                        }
                        imagePass.setAlpha(0);
                    } else {
                        // rotate
                        myRelView
                                .setRotation((float) ((x_cord - screenCenter) * (Math.PI / 32)));
                        if (x_cord < (screenCenter / 2)) {
                            imagePass.setAlpha(1);
                            if (x_cord < screenCenter / 4) {
                                Likes = 1;
                            } else {
                                Likes = 0;
                            }
                        } else {
                            Likes = 0;
                            imagePass.setAlpha(0);
                        }

                        imageLike.setAlpha(0);
                    }

                    break;
                case MotionEvent.ACTION_UP:
                    x_cord = (int) event.getRawX();
                    y_cord = (int) event.getRawY();

                    Log.e("X Point", "" + x_cord + " , Y " + y_cord);
                    imagePass.setAlpha(0);
                    imageLike.setAlpha(0);

                    if (Likes == 0) {
                        Log.e("Event Status", "Nothing");
                        myRelView.setX(40);
                        myRelView.setY(40);
                        myRelView.setRotation(0);
                    } else if (Likes == 1) {
                        Log.e("Event Status", "Passed");
                        parentView.removeView(myRelView);
                    } else if (Likes == 2) {

                        Log.e("Event Status", "Liked");
                        parentView.removeView(myRelView);
                    }
                    break;
                default:
                    break;
                }
                return true;
            }
        });

        parentView.addView(myRelView);

    }

}

}

使用这个xml 步骤1.为我的活动视图创建布局xml,如mainlayout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:orientation="vertical" >

0 个答案:

没有答案