package com.example.shoushi;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements OnGestureListener,OnTouchListener{
private int verticalMinDistance = 20;
private int minVelocity= 0;
private Bitmap Bmp, bitmap;
//Translate动画 - 位置移动
private ImageView imageView,imageView2;
private GestureDetector gestureDetector;
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView1);
imageView2 = (ImageView) findViewById(R.id.imageView2);
gestureDetector = new GestureDetector(MainActivity.this);
RelativeLayout viewSnsLayout = (RelativeLayout)findViewById(R.id.buju);
viewSnsLayout.setOnTouchListener(this);
viewSnsLayout.setLongClickable(true);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@SuppressLint("NewApi") @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
//左滑
if (e1.getX() - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity){
//******************
//获得屏幕宽度
//******************
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int Pwidth = metric.widthPixels;
//******************
//获得控件宽高
//******************
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
imageView2.measure(w, h);
int height =imageView2.getMeasuredHeight();
int width =imageView2.getMeasuredWidth();
//******************
//获得控件在屏幕中的坐标
//******************
int[] location = new int[2];
imageView.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
System.out.println(x+" "+y);
//******************
//截图方法
//******************
GetandSaveCurrentImage();
bitmap = Bitmap.createBitmap(Bmp, x, y, width, height);
imageView2.setImageBitmap(bitmap);
imageView2.setVisibility(View.VISIBLE);
//******************
//移动的动画
//******************
ObjectAnimator.ofFloat(imageView2, "translationX", Pwidth-2*width,-(y+Pwidth)).setDuration(500).start();
//.startActivity(new Intent(MainActivity.this,zuo.class));
}else if(e2.getX() - e1.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity){
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int Pwidth = metric.widthPixels;
// 屏幕宽度(像素)
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
imageView2.measure(w, h);
int height =imageView2.getMeasuredHeight();
int width =imageView2.getMeasuredWidth();
int[] location = new int[2];
imageView.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
GetandSaveCurrentImage();
bitmap = Bitmap.createBitmap(Bmp, x, y, width, height);
imageView2.setImageBitmap(bitmap);
imageView2.setVisibility(View.VISIBLE);
//向右移动时 屏宽-2倍的图宽
ObjectAnimator.ofFloat(imageView2, "translationX",
Pwidth-2*width,x+Pwidth).setDuration(500).start();
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
private void GetandSaveCurrentImage()
{
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();
Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );
//获取屏幕
View decorview = this.getWindow().getDecorView();
decorview.setDrawingCacheEnabled(true);
Bmp = decorview.getDrawingCache();
}