Alternative to setAlpha in api level 8

后端 未结 5 1315
别那么骄傲
别那么骄傲 2021-01-01 17:25

I am working on an app, which can run on Froyo as well as JellyBean. I have a class that extends PageTransformer as below:

import a         


        
相关标签:
5条回答
  • 2021-01-01 18:08

    Also, If you want use PageTransformer even in 2.2. You must change some validation that are made in the ViewPager class. Check out this example

    0 讨论(0)
  • 2021-01-01 18:11

    The easiest solution is to use the NineOldAndroids library, which backports the animations to all versions of Android. The Usage section has examples of how you'd use the library.

    0 讨论(0)
  • 2021-01-01 18:18

    To be both forward and backward compatible I use following implementation for my views:

    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);
        }
    }
    
    0 讨论(0)
  • 2021-01-01 18:27

    In case anyone is cough lazy and wants the ZoomOutPageTransformer compatible back to API 8. Uses nineoldandroids and the ViewHelper class.

    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);
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-01 18:29

    so, some resolutions here:


    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 -> From API LEVEL 1 -> deprecated in 16

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

    setAlpha FLOAT -> API Level 11+ ->


    setImageAlpha -> API LEVEL 16+ (use just for ImageViews)

    0 讨论(0)
提交回复
热议问题