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

 珍妮20111030 发布于 2023-02-08 13:03

我想像拖放一样拖放像Tinder App这样的布局.怎么做?请回复我.对于喜欢的图片 与图片不同

解决了

步骤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


撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有