mvc与音频播放

来源:互联网 发布:基恩士视觉软件 编辑:程序博客网 时间:2024/06/05 02:06

mvc
m:模型
v :视图
c :控制

模型层,可以粗略理解为是属于纯纯的类,绝不与v层有任何关系,就音频播放来说,音频是数据,绝对是属于m层,那么相对应的就有一些控制音频的方法;模型层最接近于java里面的类;

public class AudioPlayer {          //音频播放器和管理它的方法    private MediaPlayer player;    public void stop(){...}    public void play(Context c)    {...}    public void pause()    {...}}

v层 视图层,主要用于展现视图,有页面,以xml为例,不管有没有人用,都是一个页面,fragment加载就叫做fragment ,activity加载就叫做activity;

c层,最麻烦的一层,我们非常容易的能够看见c层有一大堆的代码,而且都是必须的;

       protected void onCreate(Bundle savedInstanceState) { //加载xml页面,此处是activity,fragment一布局形式加入activity中        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_hello_moon);    }
public class HelloMoonFragment extends Fragment {    private Button playbutton;    private  Button stopbutton;    private  Button pausebutton;    private  AudioPlayer player = new AudioPlayer();    @Override    public  void onCreate(Bundle s)    {....}    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle s)    {...}    @Override    public void onDestroy()    {...}}

控制层是连接视图和模型的桥梁;视图中的控件都是死的,只有通过控制层与某些方法连接起来,才能生动,比如说:

  private  Button pausebutton;     //将视图中的button拿了出来,将它的点击事件与 player.pause();关联起来;   pausebutton =(Button)v.findViewById(R.id.hello_pauseButton);        pausebutton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                player.pause();            }        });

当然,除了基本的关联,还有对生命周期中调用各种方法;

    public  void onCreate(Bundle s)    {        super.onCreate(s);        setRetainInstance(true);    //保证其旋转屏幕时fragment不重启,保留fragment    }

这里写图片描述

注意两点onAttach(),onDetach();
onCreate(),onCreateView();
第一点:fragment的保留,然后重新加载视图;

第二点:onCreate() 和onCreateView()是有显著区别的;
只有当View已经加载,我们才能找到视图上的某一个button,而onCreate()方法则是用来初始化除View以外的其他内容的

 pausebutton =(Button)v.findViewById(R.id.hello_pauseButton);
0 0
原创粉丝点击