当前位置: 移动技术网 > 移动技术>移动开发>Android > JetPack学习总结

JetPack学习总结

2020年07月09日  | 移动技术网移动技术  | 我要评论

JetPack

 

Navigation 之Fragment跳转

 

 

NavController controller = Navigation.findNavController(v);
controller.navigate(R.id.action_testHomeFragment_to_testDetailFragment);


Navigation graph中直接设置转换动画,极大减少了工作量。当然如果对自带动画效果不满意,也可以创建Animation资源自己编写xml文件来创建动画。

NavHost:一个容器,用于显示

NavController:控制跳转流程

   <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_begin="335dp"
            app:layout_constraintGuide_percent="0.5" />


getView().findViewById(R.id.button2).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_testDetailFragment_to_testHomeFragment));


        NavController controller = Navigation.findNavController(v);
                controller.navigate(R.id.action_testHomeFragment_to_testDetailFragment);
 

 

NavHostFragment


public class NavHostFragment extends Fragment implements NavHost {

public interface NavHost {

   clazz = Class.forName(name, true, context.getClassLoader());

Class.forName

    public static final class Builder {
    
          public Builder() {
        }


 @NonNull
        public Builder setLaunchSingleTop(boolean singleTop) {
            mSingleTop = singleTop;
            return this;
        }

  @NonNull
        public NavOptions build() {
            return new NavOptions(mSingleTop, mPopUpTo, mPopUpToInclusive,
                    mEnterAnim, mExitAnim, mPopEnterAnim, mPopExitAnim);
        }
        Builder.build


NavAction  NavArgument  NavOptions


 Method valueMethod = clazz.getDeclaredMethod("values");
 
 clazz.getDeclaredMethod
 
 NavArgument
 
    A annotation = getDeclaredAnnotation(annotationClass);
    getDeclaredAnnotation
    
    
    public class NavController {
    
    
    class NavControllerViewModel extends ViewModel {
    
    
    NavControllerViewModel
    
    
    ViewModel
    

NavControllerViewModel
     @NonNull
    static NavControllerViewModel getInstance(ViewModelStore viewModelStore) {
        ViewModelProvider viewModelProvider = new ViewModelProvider(viewModelStore, FACTORY);
        return viewModelProvider.get(NavControllerViewModel.class);
    }

    
private static final ViewModelProvider.Factory FACTORY = new ViewModelProvider.Factory() {
        @NonNull
        @Override
        @SuppressWarnings("unchecked")
        public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
            NavControllerViewModel viewModel = new NavControllerViewModel();
            return (T) viewModel;
        }
    };

     
     public class ViewModelProvider {
     
         public interface Factory {
    
           @NonNull
        <T extends ViewModel> T create(@NonNull Class<T> modelClass);
        }
        
        }
        
            abstract static class KeyedFactory implements Factory {
         @NonNull
        @Override
        public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
            throw new UnsupportedOperationException("create(String, Class<?>) must be called on "
                    + "implementaions of KeyedFactory");
        }
        }
    
        public ViewModelProvider(@NonNull ViewModelStore store, @NonNull Factory factory) {
        mFactory = factory;
        }
        
            public <T extends ViewModel> T get(@NonNull String key, @NonNull Class<T> modelClass) {
            
                  viewModel = ((KeyedFactory) (mFactory)).create(key, modelClass);
                  }
            

 

 

 

 

本文地址:https://blog.csdn.net/u014644594/article/details/107167788

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网