替代api级别8中的setAlpha

Chi*_*oni 18 android android-2.2-froyo android-4.2-jelly-bean

我工作的一个应用程序,它可以运行在FroyoJellyBean.我有一个扩展PageTransformer的类,如下所示:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,在这个类中编写的方法被添加进来API level 11,我有最小的sdk版本API level 8.以下是API级别11中添加的那些方法:

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

这个问题可以解决什么问题?

cV2*_*cV2 51

所以,这里的一些决议:


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);
Run Code Online (Sandbox Code Playgroud)

setAlpha INT - >从API LEVEL 1 - >在16中弃用

Drawable background = localLinLayout.getBackground();
background.setAlpha(180); //255 is max (visible)
Run Code Online (Sandbox Code Playgroud)

setAlpha FLOAT - > API Level 11+ - >


setImageAlpha- > API LEVEL 16+(仅用于ImageViews)


ian*_*ake 16

最简单的解决方案是使用NineOldAndroids库,它将动画向后移植到所有版本的Android." 使用"部分提供了有关如何使用库的示例.

  • @ shree202 - 看看在[视图助手(https://github.com/JakeWharton/NineOldAndroids/blob/master/library/src/com/nineoldandroids/view/ViewHelper.java)类 - 只使用ViewHelper.setAlpha(视图,alpha)而不是view.setAlpha(alpha)等. (7认同)