endian11
2020-09-11 a5c34b2ce811ee65e2b4fb729f6e31a1d3bd4390
规则设置 ui框架
2个文件已修改
16个文件已添加
879 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/adapter/MenuAdapter.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/adapter/SysSettingPagerAdapter.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/SysExamSettingLargeMenu.kt 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/LargeItemSettingFragment.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/shop/ContentFragment.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/shop/MenuListFragment.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/listener/OnItemClickListener.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_content.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_largeitem_setting.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_list_menu.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_pager.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_shop.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_menu.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_pager.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/adapter/MenuAdapter.java
New file
@@ -0,0 +1,107 @@
package safeluck.drive.evaluation.adapter;
import android.content.Context;
import android.graphics.Color;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.listener.OnItemClickListener;
/**
 * Created by YoKeyword on 16/2/10.
 */
public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.MyViewHolder> {
    private LayoutInflater mInflater;
    private Context mContext;
    private List<String> mItems = new ArrayList<>();
    private SparseBooleanArray mBooleanArray;
    private OnItemClickListener mClickListener;
    private int mLastCheckedPosition = -1;
    public MenuAdapter(Context context) {
        mInflater = LayoutInflater.from(context);
        mContext = context;
    }
    public void setDatas(List<String> items) {
        mItems.clear();
        mItems.addAll(items);
        mBooleanArray = new SparseBooleanArray(mItems.size());
    }
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.item_menu, parent, false);
        final MyViewHolder holder = new MyViewHolder(view);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = holder.getAdapterPosition();
                if (mClickListener != null) {
                    mClickListener.onItemClick(position, v);
                }
            }
        });
        return holder;
    }
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        if (!mBooleanArray.get(position)) {
            holder.viewLine.setVisibility(View.INVISIBLE);
            holder.itemView.setBackgroundResource(R.color.color_19d7d9);
            holder.tvName.setTextColor(Color.BLACK);
        } else {
            holder.viewLine.setVisibility(View.VISIBLE);
            holder.itemView.setBackgroundColor(Color.WHITE);
            holder.tvName.setTextColor(mContext.getResources().getColor(R.color.colorAccent));
        }
        holder.tvName.setText(mItems.get(position));
    }
    @Override
    public int getItemCount() {
        return mItems.size();
    }
    public void setItemChecked(int position) {
        mBooleanArray.put(position, true);
        if (mLastCheckedPosition > -1) {
            mBooleanArray.put(mLastCheckedPosition, false);
            notifyItemChanged(mLastCheckedPosition);
        }
        notifyDataSetChanged();
        mLastCheckedPosition = position;
    }
    class MyViewHolder extends RecyclerView.ViewHolder {
        View viewLine;
        TextView tvName;
        public MyViewHolder(View itemView) {
            super(itemView);
            viewLine = itemView.findViewById(R.id.view_line);
            tvName = (TextView) itemView.findViewById(R.id.tv_name);
        }
    }
    public void setOnItemClickListener(OnItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }
}
app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java
@@ -10,6 +10,7 @@
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.fragment.BaseDatasFragment;
import safeluck.drive.evaluation.fragment.GpsInfoFragment;
import safeluck.drive.evaluation.fragment.SysExamSettingFragment;
/**
@@ -19,7 +20,7 @@
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class SimpleFragmentAdapter  extends FragmentPagerAdapter {
    private String[] mTitles = new String[]{"基础数据","GNSS信息"};
    private String[] mTitles = new String[]{"基础数据","考试系统设置"};
    public SimpleFragmentAdapter(FragmentManager fm) {
        super(fm);
    }
@@ -41,7 +42,7 @@
//                //驾校信息
//                break;
            case 1:
                supportFragment = GpsInfoFragment.newInstance();
                supportFragment = SysExamSettingFragment.newInstance();
                break;
                default:break;
        }
app/src/main/java/safeluck/drive/evaluation/adapter/SysSettingPagerAdapter.java
New file
@@ -0,0 +1,79 @@
package safeluck.drive.evaluation.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.bean.SysExamSettingLargeMenu;
import safeluck.drive.evaluation.listener.OnItemClickListener;
/**
 *
 */
public class SysSettingPagerAdapter extends RecyclerView.Adapter<SysSettingPagerAdapter.MyViewHolder> {
    private List<SysExamSettingLargeMenu> mItems = new ArrayList<>();
    private LayoutInflater mInflater;
    private OnItemClickListener mClickListener;
    private Context mContext;
    public SysSettingPagerAdapter(Context context) {
        this.mInflater = LayoutInflater.from(context);
        this.mContext = context;
    }
    public void setDatas(List<SysExamSettingLargeMenu> items) {
        mItems.clear();
        mItems.addAll(items);
        notifyDataSetChanged();
    }
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.item_pager, parent, false);
        final MyViewHolder holder = new MyViewHolder(view);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = holder.getAdapterPosition();
                if (mClickListener != null) {
                    mClickListener.onItemClick(position, v);
                }
            }
        });
        return holder;
    }
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        SysExamSettingLargeMenu item = mItems.get(position);
        holder.tvTitle.setText(item.getMenuName());
        holder.tvTitle.setCompoundDrawablesWithIntrinsicBounds(mContext.getResources().
                getDrawable(item.getRes_id()),null,null,null);
    }
    @Override
    public int getItemCount() {
        return mItems.size();
    }
    class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView tvTitle;
        public MyViewHolder(View itemView) {
            super(itemView);
            tvTitle = (TextView) itemView.findViewById(R.id.tv_title);
        }
    }
    public void setOnItemClickListener(OnItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }
}
app/src/main/java/safeluck/drive/evaluation/bean/SysExamSettingLargeMenu.kt
New file
@@ -0,0 +1,35 @@
package safeluck.drive.evaluation.bean
import android.os.Parcel
import android.os.Parcelable
/**DriveJudge
 * Created by lzw on 2020/9/11. 11:09:24
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
data class SysExamSettingLargeMenu(var menuName:String,var res_id:Int):Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readString(),
            parcel.readInt()) {
    }
    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(menuName)
        parcel.writeInt(res_id)
    }
    override fun describeContents(): Int {
        return 0
    }
    companion object CREATOR : Parcelable.Creator<SysExamSettingLargeMenu> {
        override fun createFromParcel(parcel: Parcel): SysExamSettingLargeMenu {
            return SysExamSettingLargeMenu(parcel)
        }
        override fun newArray(size: Int): Array<SysExamSettingLargeMenu?> {
            return arrayOfNulls(size)
        }
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/LargeItemSettingFragment.java
New file
@@ -0,0 +1,87 @@
package safeluck.drive.evaluation.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.R;
/**
 * Created by YoKeyword on 16/2/7.
 */
public class LargeItemSettingFragment extends SupportFragment {
    private static final String ARG_NUMBER = "arg_number";
    private Toolbar mToolbar;
    private TextView mTvName;
    private Button mBtnNext, mBtnNextWithFinish;
    private int mNumber;
    public static LargeItemSettingFragment newInstance(int number) {
        LargeItemSettingFragment fragment = new LargeItemSettingFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_NUMBER, number);
        fragment.setArguments(args);
        return fragment;
    }
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        if (args != null) {
            mNumber = args.getInt(ARG_NUMBER);
        }
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_largeitem_setting, container, false);
        initView(view);
        return view;
    }
    private void initView(View view) {
        mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
        mTvName = (TextView) view.findViewById(R.id.tv_name);
        mBtnNext = (Button) view.findViewById(R.id.btn_next);
        mBtnNextWithFinish = (Button) view.findViewById(R.id.btn_next_with_finish);
        String title = "CyclerFragment " + mNumber;
        mToolbar.setTitle(title);
        initToolbarNav(mToolbar);
        mTvName.setText(title);
        mBtnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                start(LargeItemSettingFragment.newInstance(mNumber + 1));
            }
        });
        mBtnNextWithFinish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startWithPop(LargeItemSettingFragment.newInstance(mNumber + 1));
            }
        });
    }
    protected void initToolbarNav(Toolbar toolbar) {
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pop();
            }
        });
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
New file
@@ -0,0 +1,80 @@
package safeluck.drive.evaluation.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.adapter.SysSettingPagerAdapter;
import safeluck.drive.evaluation.bean.SysExamSettingLargeMenu;
import safeluck.drive.evaluation.fragment.shop.ShopFragment;
import safeluck.drive.evaluation.listener.OnItemClickListener;
/**
 * DriveJudge
 * Created by lzw on 2020/9/10. 19:02:56
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class SysExamSettingFragment extends SupportFragment {
    private RecyclerView mRecy;
    private SysSettingPagerAdapter mAdapter;
    ArrayList<SysExamSettingLargeMenu> items = new ArrayList<>();
    public static SysExamSettingFragment newInstance(){
        SysExamSettingFragment fragment = new SysExamSettingFragment();
        return fragment;
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_pager, container, false);
        initView(view);
        return view;
    }
    private void initView(View view) {
        mRecy = (RecyclerView) view.findViewById(R.id.recy);
        mAdapter = new SysSettingPagerAdapter(_mActivity);
        LinearLayoutManager manager = new LinearLayoutManager(_mActivity);
        mRecy.setLayoutManager(manager);
        mRecy.setAdapter(mAdapter);
        mAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(int position, View view) {
                Toast.makeText(_mActivity, position+"", Toast.LENGTH_SHORT).show();
                if (getParentFragment() instanceof  BaseSettingFragment){
                    ((BaseSettingFragment)getParentFragment()).start(ShopFragment.newInstance(items.get(position)));
                }
            }
        });
        mRecy.post(new Runnable() {
            @Override
            public void run() {
                // Init Datas
                ArrayList<String> menues = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.array_large_item_menu)));
                for (int i = 0; i < menues.size(); i++) {
                    SysExamSettingLargeMenu item  = new SysExamSettingLargeMenu(menues.get(i),R.mipmap.province_id);
                    items.add(item);
                }
                mAdapter.setDatas(items);
            }
        });
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/shop/ContentFragment.java
New file
@@ -0,0 +1,84 @@
package safeluck.drive.evaluation.fragment.shop;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.Nullable;
import me.yokeyword.fragmentation.SupportFragment;
import me.yokeyword.fragmentation.anim.DefaultNoAnimator;
import me.yokeyword.fragmentation.anim.FragmentAnimator;
import safeluck.drive.evaluation.R;
/**
 * Created by YoKeyword on 16/2/9.
 */
public class ContentFragment extends SupportFragment {
    private static final String ARG_MENU = "arg_menu";
    private TextView mTvContent;
    private Button mBtnNext;
    private String mMenu;
    public static ContentFragment newInstance(String menu) {
        Bundle args = new Bundle();
        args.putString(ARG_MENU, menu);
        ContentFragment fragment = new ContentFragment();
        fragment.setArguments(args);
        return fragment;
    }
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        if (args != null) {
            mMenu = args.getString(ARG_MENU);
        }
    }
    @Override
    public FragmentAnimator onCreateFragmentAnimator() {
        return new DefaultNoAnimator();
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_content, container, false);
        initView(view);
        return view;
    }
    private void initView(View view) {
        mTvContent = (TextView) view.findViewById(R.id.tv_content);
        mBtnNext = (Button) view.findViewById(R.id.btn_next);
        mTvContent.setText("Content:\n" + mMenu);
        mBtnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 和MsgFragment同级别的跳转 交给MsgFragment处理
                if (getParentFragment() instanceof ShopFragment) {
//                    ((ShopFragment) getParentFragment()).start(CycleFragment.newInstance(1));
                }
            }
        });
    }
    @Override
    public boolean onBackPressedSupport() {
        // ContentFragment是ShopFragment的栈顶子Fragment,可以在此处理返回按键事件
        return super.onBackPressedSupport();
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/shop/MenuListFragment.java
New file
@@ -0,0 +1,117 @@
package safeluck.drive.evaluation.fragment.shop;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import me.yokeyword.fragmentation.SupportFragment;
import me.yokeyword.fragmentation.anim.DefaultNoAnimator;
import me.yokeyword.fragmentation.anim.FragmentAnimator;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.adapter.MenuAdapter;
import safeluck.drive.evaluation.listener.OnItemClickListener;
/**
 * Created by YoKeyword on 16/2/9.
 */
public class MenuListFragment extends SupportFragment {
    private static final String ARG_MENUS = "arg_menus";
    private static final String SAVE_STATE_POSITION = "save_state_position";
    private RecyclerView mRecy;
    private MenuAdapter mAdapter;
    private ArrayList<String> mMenus;
    private int mCurrentPosition = -1;
    public static MenuListFragment newInstance(ArrayList<String> menus) {
        Bundle args = new Bundle();
        args.putStringArrayList(ARG_MENUS, menus);
        MenuListFragment fragment = new MenuListFragment();
        fragment.setArguments(args);
        return fragment;
    }
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        if (args != null) {
            mMenus = args.getStringArrayList(ARG_MENUS);
        }
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_list_menu, container, false);
        initView(view);
        return view;
    }
    @Override
    public FragmentAnimator onCreateFragmentAnimator() {
        return new DefaultNoAnimator();
    }
    private void initView(View view) {
        mRecy = (RecyclerView) view.findViewById(R.id.recy);
    }
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        LinearLayoutManager manager = new LinearLayoutManager(_mActivity);
        mRecy.setLayoutManager(manager);
        mAdapter = new MenuAdapter(_mActivity);
        mRecy.setAdapter(mAdapter);
        mAdapter.setDatas(mMenus);
        mAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(int position, View view) {
                showContent(position);
            }
        });
        if (savedInstanceState != null) {
            mCurrentPosition = savedInstanceState.getInt(SAVE_STATE_POSITION);
            mAdapter.setItemChecked(mCurrentPosition);
        } else {
            mCurrentPosition = 0;
            mAdapter.setItemChecked(0);
        }
    }
    private void showContent(int position) {
        if (position == mCurrentPosition) {
            return;
        }
        mCurrentPosition = position;
        mAdapter.setItemChecked(position);
        ContentFragment fragment = ContentFragment.newInstance(mMenus.get(position));
        ((ShopFragment) getParentFragment()).switchContentFragment(fragment);
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(SAVE_STATE_POSITION, mCurrentPosition);
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java
New file
@@ -0,0 +1,95 @@
package safeluck.drive.evaluation.fragment.shop;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import java.util.ArrayList;
import java.util.Arrays;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.bean.SysExamSettingLargeMenu;
/**
 * Created by YoKeyword on 16/2/4.
 */
public class ShopFragment extends SupportFragment {
    public static final String TAG = ShopFragment.class.getSimpleName();
    private static final String ARG_MENU = "arg_menu_large";
    private Toolbar mToolbar;
    private SysExamSettingLargeMenu mMenu;
    public static ShopFragment newInstance(SysExamSettingLargeMenu sysExamSettingLargeMenu) {
        Bundle args = new Bundle();
        args.putParcelable(ARG_MENU,sysExamSettingLargeMenu);
        ShopFragment fragment = new ShopFragment();
        fragment.setArguments(args);
        return fragment;
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_shop, container, false);
        initView(view, savedInstanceState);
        return view;
    }
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        if (args != null) {
            mMenu = args.getParcelable(ARG_MENU);
        }
    }
    private void initView(View view, Bundle savedInstanceState) {
        mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
        mToolbar.setTitle(mMenu.getMenuName());
        initToolbarNav(mToolbar);
        if (findChildFragment(MenuListFragment.class) == null) {
            ArrayList<String> listMenus = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.array_exam_rule_menu)));
            MenuListFragment menuListFragment = MenuListFragment.newInstance(listMenus);
            loadRootFragment(R.id.fl_list_container, menuListFragment);
            // false:  不加入回退栈;  false: 不显示动画
            loadRootFragment(R.id.fl_content_container, ContentFragment.newInstance(listMenus.get(0)), false, false);
        }
    }
    @Override
    public boolean onBackPressedSupport() {
        // ContentFragment是ShopFragment的栈顶子Fragment,会先调用ContentFragment的onBackPressedSupport方法
        Toast.makeText(_mActivity, "onBackPressedSupport-->return false, 上层处理"  , Toast.LENGTH_SHORT).show();
        return false;
    }
    /**
     * 替换加载 内容Fragment
     *
     * @param fragment
     */
    public void switchContentFragment(ContentFragment fragment) {
        SupportFragment contentFragment = findChildFragment(ContentFragment.class);
        if (contentFragment != null) {
            contentFragment.replaceFragment(fragment, false);
        }
    }
    protected void initToolbarNav(Toolbar toolbar) {
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pop();
            }
        });
    }
}
app/src/main/java/safeluck/drive/evaluation/listener/OnItemClickListener.java
New file
@@ -0,0 +1,7 @@
package safeluck.drive.evaluation.listener;
import android.view.View;
public interface OnItemClickListener {
    void onItemClick(int position, View view);
}
app/src/main/res/layout/fragment_content.xml
New file
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="center"
              android:orientation="vertical">
    <TextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:gravity="center_horizontal"
        android:textColor="@android:color/white"
        android:text="CyclerFragment1"
        android:textSize="26sp"/>
    <Button
        android:id="@+id/btn_next"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="32dp"
        android:textAllCaps="false"
        android:text="start_cycler"/>
</LinearLayout>
app/src/main/res/layout/fragment_largeitem_setting.xml
New file
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <include layout="@layout/toolbar"/>
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:gravity="center_horizontal"
        android:text="CyclerFragment1"
        android:textSize="30sp"/>
    <Button
        android:id="@+id/btn_next_with_finish"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:layout_marginTop="48dp"
        android:text="启动启动CyclerFragment,并关闭自己"/>
    <Button
        android:id="@+id/btn_next"
        android:layout_width="match_parent"
        android:textAllCaps="false"
        android:layout_height="wrap_content"
        android:layout_marginTop="48dp"
        android:text="启动CyclerFragment"/>
</LinearLayout>
app/src/main/res/layout/fragment_list_menu.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recy"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
app/src/main/res/layout/fragment_pager.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recy"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</FrameLayout>
app/src/main/res/layout/fragment_shop.xml
New file
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <include layout="@layout/toolbar"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
        <FrameLayout
            android:id="@+id/fl_list_container"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
        <FrameLayout
            android:id="@+id/fl_content_container"
            android:layout_width="0dp"
            android:layout_weight="2.5"
            android:layout_height="match_parent"/>
    </LinearLayout>
</LinearLayout>
app/src/main/res/layout/item_menu.xml
New file
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:background="@drawable/ic_bground"
                android:orientation="vertical">
    <View
        android:id="@+id/view_line"
        android:layout_width="3dp"
        android:visibility="invisible"
        android:layout_height="match_parent"
        android:background="@color/colorAccent"/>
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:layout_toRightOf="@id/view_line"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.3dp"
        android:background="#c9c9c9"/>
</RelativeLayout>
app/src/main/res/layout/item_pager.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="56dp"
              android:orientation="vertical"
              android:paddingLeft="16dp"
              android:paddingRight="16dp">
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:textColor="@android:color/white"
        android:text="sdf"
        android:drawablePadding="@dimen/ui_margin_5dp"
        android:textSize="17sp"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.2dp"
        android:layout_alignParentBottom="true"
        android:background="#c9c9c9"/>
</RelativeLayout>
app/src/main/res/values/strings.xml
@@ -58,7 +58,29 @@
        <item>模拟夜间考试完成请关闭所有灯光,请起步继续完成考试</item>
    </array>
    <string-array name="array_exam_rule_menu">
        <item>档位相关设置</item>
        <item>常用参数设置</item>
        <item>通用评判设置</item>
        <item>上车起步设置</item>
        <item>直线行驶设置</item>
        <item>通过站点设置</item>
        <item>转向灯光设置</item>
        <item>超车会车设置</item>
        <item>加减档位设置</item>
        <item>靠边停车设置</item>
    </string-array>
<string-array name="array_large_item_menu">
    <item>灯光设置</item>
    <item>规则设置</item>
    <item>扣分设置</item>
    <item>指令设置</item>
    <item>系统设置</item>
    <item>教学系统设置</item>
    <item>档位学习</item>
</string-array>