利用截图做图片切换动画

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();   
 
   
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值