Adroid之MVC框架_

MVC模式(Model-View-Controller)是一种架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

Model层实现系统中的业务逻辑。 View层用于与用户的交互。 Controller层是Model与View之间沟通的桥梁。
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新
使用MVC模式可以将显示部分与数据部分分离,这样当更换视图或模型时可以不影响对方,
更有利于程序的维护。

1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入。当然这里需要进行Java和JavaScript之间的通信,Android提供了它们之间非常方便的通信实现。     

  2) 控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity,不要在Acitivity中写代码,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

  3) 模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。就是应用程序中二进制的数据。


MVC, 即Model-View-Controller, 基于页面逻辑的修改要多于业务逻辑, 分离两种逻辑减少类代码的修改.

  • Model: 即数据层, 负责处理业务逻辑, 监听网络与数据库接口.
  • View: 即界面(UI)层, 显示来源于Model的数据.
  • Contoller: 即逻辑层, 传递用户的交互和更新Model的数据.

首先视图接受用户输入请求,然后将请求传递给控制器,控制器再调用某个模型来处理用户的请求,在控制器的控制下,再将处理后的结果交给某个视图进行格式化输出给用户。另外,View是可以直接访问Model来进行数据的处理的

下面介绍一下代码:


public class WelcomeActivity extends AppCompatActivity {

    private ImageView iv;

    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };
    int time = 3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);

        iv = (ImageView) findViewById(R.id.welcome_iv);

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                time --;
                if(time == 0){
                    Intent intent = new Intent(WelcomeActivity.this,ShouyeActivity.class);
                    startActivity(intent);
                }
                handler.postDelayed(this,1000);
            }

        },1000);
    }

    @Override
    protected void onDestroy() {

        handler.removeCallbacksAndMessages(null);

        super.onDestroy();
    }
}

每个层次都分离开·这样显得代码清晰。

下面的是工具类的包:

public class NoScrollViewPager extends ViewPager {
    private boolean isCanScroll = true;

    public NoScrollViewPager(Context context) {
        super(context);
    }

    public NoScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * 设置其是否能滑动换页
     * @param isCanScroll false 不能换页, true 可以滑动换页
     */
    public void setScanScroll(boolean isCanScroll) {
        this.isCanScroll = isCanScroll;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return isCanScroll && super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return isCanScroll && super.onTouchEvent(ev);

    }
}

这是其中的一个Fragment

public class Frag_weitao extends Fragment {

    String [] lis = {"关注","发现"};
    private List<Fragment> list;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = View.inflate(getActivity(), R.layout.frag_weitao,null);

        TabLayout tb = view.findViewById(R.id.frag_weitao_tab);
        ViewPager vp = view.findViewById(R.id.frag_weitao_vp);
        initData();

        MyFragWeiTaoPagerAdapter adapter = new MyFragWeiTaoPagerAdapter(getChildFragmentManager());
        vp.setAdapter(adapter);

        tb.setupWithViewPager(vp);
        tb.setTabMode(TabLayout.MODE_SCROLLABLE);

//        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
//            @Override
//            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//
//            }
//
//            @Override
//            public void onPageSelected(int position) {
//
//                switch (position){
//                    case 0:
//                        new Frag_weitao_faxian();
//                        break;
//                    case 1:
//                        new Frag_weitao_guanzhu();
//                        break;
//                }
//
//            }
//
//            @Override
//            public void onPageScrollStateChanged(int state) {
//
//            }
//        });

        return view;
    }

    private void initData() {

        for (int i = 0; i <lis.length ; i++) {
            list = new ArrayList<>();
            list.add(new Frag_weitao_faxian());
            list.add(new Frag_weitao_guanzhu());

        }


    }

    class MyFragWeiTaoPagerAdapter extends FragmentPagerAdapter{

        public MyFragWeiTaoPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return list.get(position);
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return lis[position];
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值