versiones ultima todas son latest las jelly donut cuáles cual caracteristicas bean android android-4.2-jelly-bean android-2.2-froyo

android - ultima - Alternativa a setAlpha en api nivel 8



todas las versiones de android y sus caracteristicas (5)

Estoy trabajando en una aplicación, que puede ejecutarse tanto en Froyo como en JellyBean . Tengo una clase que extiende PageTransformer como se muestra a continuación:

import android.support.v4.view.ViewPager.PageTransformer; import android.view.View; public class ZoomOutPageTransformer implements PageTransformer { private static float MIN_SCALE = 0.85f; private static float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { view.setAlpha(0); } else if (position <= 1) { float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { view.setTranslationX(horzMargin - vertMargin / 2); } else { view.setTranslationX(-horzMargin + vertMargin / 2); } view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { view.setAlpha(0); } } }

El problema es que los métodos escritos en esta clase se agregaron en el API level 11 y tengo una versión de sdk mínima del API level 8 de la API level 8 . Los siguientes son los métodos que se agregaron en el nivel de API 11:

  1. setAlpha()
  2. setTranslationX()
  3. setScaleX()
  4. setScaleY()

¿Cuál puede ser la solución para este problema?


Además, si desea utilizar PageTransformer incluso en 2.2. Debe cambiar alguna validación que se realiza en la clase ViewPager . Echa un vistazo a este example


Así que, algunas resoluciones aquí:

setAlphaAnimation ... API LEVEL 1

AlphaAnimation alpha = new AlphaAnimation(0.7F, 0.7F); alpha.setDuration(0); // Make animation instant alpha.setFillAfter(true); // Tell it to persist after the animation ends view.startAnimation(alpha);

setAlpha INT -> De API NIVEL 1 -> obsoleto en 16

Drawable background = localLinLayout.getBackground(); background.setAlpha(180); //255 is max (visible)

setAlpha FLOAT -> API Level 11+ ->

setImageAlpha -> API LEVEL 16+ (usar solo para ImageViews)


En caso de que alguien sea tosco y quiera que el ZoomOutPageTransformer sea compatible con la API 8. Utiliza nineoldandroids y la clase ViewHelper.

package com.weddingwire.vendorsearch.Animation; import android.support.v4.view.ViewPager; import android.view.View; import com.nineoldandroids.view.ViewHelper; public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static float MIN_SCALE = 0.85f; private static float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. ViewHelper.setAlpha(view, 0); } else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { ViewHelper.setTranslationX(view, (horzMargin - vertMargin / 2)); } else { ViewHelper.setTranslationX(view, -horzMargin + vertMargin / 2); } // Scale the page down (between MIN_SCALE and 1) ViewHelper.setScaleX(view, scaleFactor); ViewHelper.setScaleY(view, scaleFactor); // Fade the page relative to its size. ViewHelper.setAlpha(view, MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { // (1,+Infinity] // This page is way off-screen to the right. ViewHelper.setAlpha(view, 0); } } }



Para ser compatible con versiones anteriores y posteriores, uso la siguiente implementación para mis vistas:

private void fadeOut(final View view) { int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { AlphaAnimation alpha = new AlphaAnimation(1f, 0f); alpha.setDuration(mAnimationDuration); alpha.setFillAfter(true); view.startAnimation(alpha); } else { view.animate() .alpha(0f) .setDuration(mAnimationDuration) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { view.setVisibility(View.GONE); } }); } } private void fadeIn(View view) { int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { view.setVisibility(View.VISIBLE); AlphaAnimation alpha = new AlphaAnimation(0f, 1f); alpha.setDuration(mAnimationDuration); alpha.setFillAfter(true); view.startAnimation(alpha); } else { view.setAlpha(0f); view.setVisibility(View.VISIBLE); view.animate() .alpha(1f) .setDuration(mAnimationDuration) .setListener(null); } }