利用截圖做圖片切換動畫
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();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.