Android Support升级AndroidX后找不到leanback的SlideCallback类如何解决
问题原因
AndroidX的leanback库从1.0.0-alpha1版本开始,就移除了原本Support库中的android.support.v17.leanback.transition.SlideCallback类,该类的功能已经被Android标准的Slide过渡类替代,因此你导入androidx.leanback.transition.*也无法找到对应类。
适配方案
第一步:替换依赖导入
删除无效的leanback transition导入,改用AndroidX标准过渡类:
import android.transition.Slide; import android.view.Gravity; import android.view.View; import android.util.Log; // 自定义的TransitionHelper可以保留,如果是leanback提供的类同步检查替换即可
第二步:重构原有逻辑
你当前代码的作用是配置过渡从顶部滑入,滑入距离等于View自身高度,直接用Slide类即可实现相同效果,重构后的代码如下:
public class VGDetailsTitleTransitionHelper { final static Slide sSlideTransition = new Slide(Gravity.TOP); static { sSlideTransition.addListener(new android.transition.Transition.TransitionListener() { @Override public void onTransitionStart(android.transition.Transition transition) { Slide slide = (Slide) transition; for (View view : slide.getTargets()) { if (view != null) { Log.v("getSlide details", "" + view.getHeight()); // 设置滑动距离为View自身高度 view.setTranslationY(-view.getHeight()); } } } @Override public void onTransitionEnd(android.transition.Transition transition) { // 动画结束后重置属性避免影响后续布局 for (View view : ((Slide)transition).getTargets()) { if (view != null) { view.setTranslationY(0); } } } @Override public void onTransitionCancel(android.transition.Transition transition) {} @Override public void onTransitionPause(android.transition.Transition transition) {} @Override public void onTransitionResume(android.transition.Transition transition) {} }); } }
第三步:替换调用逻辑
原有代码中使用sSlideCallback的地方,直接替换为重构后的sSlideTransition实例即可,用法和标准Transition类完全一致。
如果你需要兼容Android 8.0以下版本,可以改用AppCompat库中的
androidx.transition.Slide,用法和上述代码完全一致,只需替换对应的导入包即可。
内容的提问来源于stack exchange,提问作者Enas AL Saeek
相关产品推荐
相关产品推荐

