使用屬性動畫的監聽實現圖片對角線移動
阿新 • • 發佈:2018-11-19
程式碼塊:
WindowManager wm = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; // 螢幕寬度(畫素) int height = dm.heightPixels; // 螢幕高度(畫素) float density = dm.density; // 螢幕密度(0.75 / 1.0 / 1.5) int densityDpi = dm.densityDpi; // 螢幕密度dpi(120 / 160 / 240) // 螢幕寬度演算法:螢幕寬度(畫素)/螢幕密度 float screenWidth = (width / density); // 螢幕寬度(dp) float screenHeight = (height / density);// 螢幕高度(dp) ObjectAnimator translationY = ObjectAnimator.ofFloat(imageView, "translationY", new float[]{0f,screenHeight+260}); translationY.setDuration(8000); translationY.start(); ObjectAnimator translationX = ObjectAnimator.ofFloat(imageView, "translationX", new float[]{0f,-(screenWidth+185)}); translationX.setDuration(8000); translationX.start(); ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "alpha", new float[]{1.0f, 0.8f, 0.6f, 0.4f, 0.2f,0.4f,0.6f,0.8f,1.0f}); alpha.setDuration(8000); alpha.start(); translationY.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationEnd(Animator animator) { imageView.setVisibility(View.VISIBLE); } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); //處理圖片的點選 if(!flag){ //設定圖片 imageView.setImageResource(R.mipmap.xin_two); flag = true; }else{ imageView.setImageResource(R.mipmap.xin); flag = false; }