利用截圖做圖片切換動畫

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();   
 
   
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章