简单说一下fragment,以及一些误区

来源:互联网 发布:淘宝售假三次 编辑:程序博客网 时间:2024/03/29 02:39

原来使用fragment的时候其Activity继承的是FragmentActivity,所以当时就没有发现漏洞,可是现在却不然,突然发现自己又掉坑里了,因为效果不是我要的,但是程序并没有问题,只是程序适用的场景不同,好,现在来说一下,我在那翻船了,建议还是了解fragment   http://blog.csdn.net/qq_23195583/article/details/45195127(这个适用情况比较多),下面说一下

说一下继承FragmentActivity的

package com.example.fanyafeng.laugh.activity;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.app.FragmentTransaction;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.DisplayMetrics;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.ImageView;import android.widget.TextView;import com.example.fanyafeng.laugh.R;import com.example.fanyafeng.laugh.fragment.EvaluateFragment;import com.example.fanyafeng.laugh.fragment.RecommendFragment;import java.util.ArrayList;import java.util.List;public class TestActivity extends FragmentActivity {    private ViewPager test_viewpager;    private List<Fragment> fragmentList;    private int selectedColor, unSelectedColor;    private Drawable selectedButton, unSelectedButton;    private View RecommendView, EvaluateView;    private TextView test_recommend, test_evaluate;    private ImageView test_recommend_img, test_evaluate_img;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test);        initView();        initData();    }    private void initView() {        unSelectedColor = getResources().getColor(R.color.black);        selectedColor = getResources().getColor(R.color.red);        selectedButton = getResources().getDrawable(R.drawable.video_playing_normal);        unSelectedButton = getResources().getDrawable(R.drawable.video_playing_pressed);        test_recommend_img = (ImageView) findViewById(R.id.test_recommend_img);        test_evaluate_img = (ImageView) findViewById(R.id.test_evaluate_img);        test_recommend = (TextView) findViewById(R.id.test_recommend);        test_evaluate = (TextView) findViewById(R.id.test_evaluate);        test_recommend.setOnClickListener(new MyOnClickListener(0));        test_evaluate.setOnClickListener(new MyOnClickListener(1));        initTextView();        initViewPager();    }    private void initTextView() {        test_recommend.setTextColor(selectedColor);        test_recommend_img.setBackground(selectedButton);        test_evaluate.setTextColor(unSelectedColor);        test_evaluate_img.setBackground(unSelectedButton);    }    private void initData() {    }    private void initViewPager() {        test_viewpager = (ViewPager) findViewById(R.id.test_viewpager);        fragmentList = new ArrayList<Fragment>();        fragmentList.add(new RecommendFragment());        fragmentList.add(new EvaluateFragment());        test_viewpager.setAdapter(new OurPagerAdapter(getSupportFragmentManager(), fragmentList));        test_viewpager.setCurrentItem(0);        test_viewpager.setOnPageChangeListener(new MyOnPageChangeListener());    }    /**     * 定义适配器     */    class OurPagerAdapter extends FragmentPagerAdapter {        private List<Fragment> fragmentList;        private FragmentManager fragmentManager;        public OurPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {            super(fm);            this.fragmentList = fragmentList;        }        /**         * 得到每个页面         */        @Override        public Fragment getItem(int arg0) {            return (fragmentList == null || fragmentList.size() == 0) ? null                    : fragmentList.get(arg0);        }        public void setFragments(ArrayList<Fragment> fragments) {            if (this.fragmentList != null) {                FragmentTransaction ft = fragmentManager.beginTransaction();                for (Fragment f : this.fragmentList) {                    ft.remove(f);                }                ft.commit();                ft = null;                fragmentManager.executePendingTransactions();            }            this.fragmentList = fragments;            notifyDataSetChanged();        }        /**         * 每个页面的title         */        @Override        public CharSequence getPageTitle(int position) {            return null;        }        /**         * 页面的总个数         */        @Override        public int getCount() {            return fragmentList == null ? 0 : fragmentList.size();        }    }    public class MyOnPageChangeListener implements ViewPager.OnPageChangeListener {        public void onPageScrollStateChanged(int index) {        }        public void onPageScrolled(int arg0, float arg1, int arg2) {        }        public void onPageSelected(int index) {            switch (index) {                case 0:                    test_recommend.setTextColor(selectedColor);                    test_recommend_img.setBackground(selectedButton);                    test_evaluate.setTextColor(unSelectedColor);                    test_evaluate_img.setBackground(unSelectedButton);                    break;                case 1:                    test_recommend.setTextColor(unSelectedColor);                    test_recommend_img.setBackground(unSelectedButton);                    test_evaluate.setTextColor(selectedColor);                    test_evaluate_img.setBackground(selectedButton);                    break;            }        }    }    private class MyOnClickListener implements View.OnClickListener {        private int index = 0;        public MyOnClickListener(int i) {            index = i;        }        public void onClick(View v) {            test_viewpager.setCurrentItem(index);        }    }}
这个相当于管理fragment,这样的话在其new的话可以在加载的时候进行相应的生命周期的操作

来看被管理的fragment

package com.example.fanyafeng.laugh.fragment;import android.app.Activity;import android.net.Uri;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import com.example.fanyafeng.laugh.R;import com.example.fanyafeng.laugh.adapter.VideoListAdapter;import com.example.fanyafeng.laugh.bean.VideoListBean;import com.example.fanyafeng.laugh.util.L;import com.example.fanyafeng.laugh.util.PostUtil;import java.io.IOException;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;/** * A simple {@link Fragment} subclass. * Activities that contain this fragment must implement the * {@link RecommendFragment.OnFragmentInteractionListener} interface * to handle interaction events. * Use the {@link RecommendFragment#newInstance} factory method to * create an instance of this fragment. */public class RecommendFragment extends BaseFragment {    // TODO: Rename parameter arguments, choose names that match    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER    private static final String ARG_PARAM1 = "param1";    private static final String ARG_PARAM2 = "param2";    // TODO: Rename and change types of parameters    private String mParam1;    private String mParam2;    private ListView recommend_listview;    private VideoListAdapter videoListAdapter;    private List<VideoListBean> videoListBeanList = new ArrayList<VideoListBean>();    private List<Map<String, Object>> videoInfoList = new ArrayList<Map<String, Object>>();//    private OnFragmentInteractionListener mListener;    /**     * Use this factory method to create a new instance of     * this fragment using the provided parameters.     *     * @param param1 Parameter 1.     * @param param2 Parameter 2.     * @return A new instance of fragment RecommendFragment.     */    // TODO: Rename and change types and number of parameters    public static RecommendFragment newInstance(String param1, String param2) {        RecommendFragment fragment = new RecommendFragment();        Bundle args = new Bundle();        args.putString(ARG_PARAM1, param1);        args.putString(ARG_PARAM2, param2);        fragment.setArguments(args);        return fragment;    }    public RecommendFragment() {        // Required empty public constructor    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (getArguments() != null) {            mParam1 = getArguments().getString(ARG_PARAM1);            mParam2 = getArguments().getString(ARG_PARAM2);        }    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {        // Inflate the layout for this fragment        return inflater.inflate(R.layout.fragment_recommend, container, false);    }    @Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        initView();        Thread loadThread = new Thread(new LoadThread());        loadThread.start();        initData();    }    private void initView(){        recommend_listview=(ListView)getActivity().findViewById(R.id.recommend_listview);    }    private void initData(){    }    class LoadThread implements Runnable {        @Override        public void run() {            loadData();        }    }    private void loadData(){        Map<String,String> map=new LinkedHashMap<String,String>();        map.put("devicetype","android");        try {            String backMsg = PostUtil.postData(BaseUrl+GetRecommendVideo, map);            L.d("推荐列表具体内容",backMsg);        } catch (IOException e) {            e.printStackTrace();        }    }//    // TODO: Rename method, update argument and hook method into UI event//    public void onButtonPressed(Uri uri) {//        if (mListener != null) {//            mListener.onFragmentInteraction(uri);//        }//    }//    @Override//    public void onAttach(Activity activity) {//        super.onAttach(activity);//        try {//            mListener = (OnFragmentInteractionListener) activity;//        } catch (ClassCastException e) {//            throw new ClassCastException(activity.toString()//                    + " must implement OnFragmentInteractionListener");//        }//    }//    @Override//    public void onDetach() {//        super.onDetach();//        mListener = null;//    }    /**     * This interface must be implemented by activities that contain this     * fragment to allow an interaction in this fragment to be communicated     * to the activity and potentially other fragments contained in that     * activity.     * <p/>     * See the Android Training lesson <a href=     * "http://developer.android.com/training/basics/fragments/communicating.html"     * >Communicating with Other Fragments</a> for more information.     *///    public interface OnFragmentInteractionListener {//        // TODO: Update argument type and name//        public void onFragmentInteraction(Uri uri);//    }}
这样的话,每当加载相应的fragment就可以按照相应的生命周期走,而不是仅仅加载相应的xml上面的布局,再来看继承Activity的

下面的Activity里面有其他的代码,大家稍微过滤小,我就不在这里ctrl+d了

package com.example.fanyafeng.laugh.activity;import android.content.Context;import android.content.Intent;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import android.os.Looper;import android.os.Message;import android.os.PowerManager;import android.os.PowerManager.WakeLock;import android.os.Process;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.app.FragmentTransaction;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;import com.baidu.cyberplayer.core.BVideoView;import com.baidu.cyberplayer.core.BVideoView.OnCompletionListener;import com.baidu.cyberplayer.core.BVideoView.OnErrorListener;import com.baidu.cyberplayer.core.BVideoView.OnInfoListener;import com.baidu.cyberplayer.core.BVideoView.OnPlayingBufferCacheListener;import com.baidu.cyberplayer.core.BVideoView.OnPreparedListener;import com.example.fanyafeng.laugh.R;import com.example.fanyafeng.laugh.fragment.EvaluateFragment;import com.example.fanyafeng.laugh.fragment.RecommendFragment;import com.example.fanyafeng.laugh.util.L;import com.example.fanyafeng.laugh.util.PostUtil;import com.example.fanyafeng.laugh.util.T;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;public class VideoViewPlayingActivity extends BaseNoActionbarActivity implements OnPreparedListener, OnCompletionListener,        OnErrorListener, OnInfoListener, OnPlayingBufferCacheListener {    private final String TAG = "VideoViewPlayingActivity";    private String mVideoSource = null;    private ImageButton mPlaybtn = null;    private ImageButton mPrebtn = null;    private ImageButton mForwardbtn = null;    private LinearLayout mController = null;    private SeekBar mProgress = null;    private TextView mDuration = null;    private TextView mCurrPostion = null;    private String url_info;    /**     * 记录播放位置     */    private int mLastPos = 0;    /**     * 播放状态     */    private enum PLAYER_STATUS {        PLAYER_IDLE, PLAYER_PREPARING, PLAYER_PREPARED,    }    private PLAYER_STATUS mPlayerStatus = PLAYER_STATUS.PLAYER_IDLE;    private BVideoView mVV = null;    private EventHandler mEventHandler;    private HandlerThread mHandlerThread;    private final Object SYNC_Playing = new Object();    private WakeLock mWakeLock = null;    private static final String POWER_LOCK = "VideoViewPlayingActivity";    private boolean mIsHwDecode = false;    private final int EVENT_PLAY = 0;    private final int UI_EVENT_UPDATE_CURRPOSITION = 1;    private ViewPager video_playing_viewpager;    private List<View> viewList;    private FragmentManager fragmentManager;    private TextView video_recommend, video_evaluate;    private int selectedColor, unSelectedColor;    private View RecommendView, EvaluateView;    private Drawable selectedButton, unSelectedButton;    private ImageView video_recommend_img, video_evaluate_img;    class EventHandler extends Handler {        public EventHandler(Looper looper) {            super(looper);        }        @Override        public void handleMessage(Message msg) {            switch (msg.what) {                case EVENT_PLAY:                    /**                     * 如果已经播放了,等待上一次播放结束                     */                    if (mPlayerStatus != PLAYER_STATUS.PLAYER_IDLE) {                        synchronized (SYNC_Playing) {                            try {                                SYNC_Playing.wait();                                Log.v(TAG, "wait player status to idle");                            } catch (InterruptedException e) {                                // TODO Auto-generated catch block                                e.printStackTrace();                            }                        }                    }                    /**                     * 设置播放url                     */                    mVV.setVideoPath(mVideoSource);                    /**                     * 续播,如果需要如此                     */                    if (mLastPos > 0) {                        mVV.seekTo(mLastPos);                        mLastPos = 0;                    }                    /**                     * 显示或者隐藏缓冲提示                     */                    mVV.showCacheInfo(true);                    /**                     * 开始播放                     */                    mVV.start();                    mPlayerStatus = PLAYER_STATUS.PLAYER_PREPARING;                    break;                default:                    break;            }        }    }    Handler mUIHandler = new Handler() {        public void handleMessage(Message msg) {            switch (msg.what) {                /**                 * 更新进度及时间                 */                case UI_EVENT_UPDATE_CURRPOSITION:                    int currPosition = mVV.getCurrentPosition();                    int duration = mVV.getDuration();                    updateTextViewWithTimeFormat(mCurrPostion, currPosition);                    updateTextViewWithTimeFormat(mDuration, duration);                    mProgress.setMax(duration);                    mProgress.setProgress(currPosition);                    mUIHandler.sendEmptyMessageDelayed(UI_EVENT_UPDATE_CURRPOSITION, 200);                    break;                default:                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_video_view_playing);        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);        mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, POWER_LOCK);        Intent intent = this.getIntent();        url_info = intent.getStringExtra("url_info");        L.d(url_info);        mIsHwDecode = getIntent().getBooleanExtra("isHW", false);        Thread loadThread = new Thread(new LoadMore());        loadThread.start();        initTextView();        initUI();        initViewPager();        /**         * 开启后台事件处理线程         */        mHandlerThread = new HandlerThread("event handler thread", Process.THREAD_PRIORITY_BACKGROUND);        mHandlerThread.start();//        mEventHandler = new EventHandler(mHandlerThread.getLooper());    }    private void initTextView() {        unSelectedColor = getResources().getColor(R.color.black);        selectedColor = getResources().getColor(R.color.black);        selectedButton = getResources().getDrawable(R.drawable.video_playing_normal);        unSelectedButton = getResources().getDrawable(R.drawable.video_playing_pressed);        video_recommend = (TextView) findViewById(R.id.video_recommend);        video_evaluate = (TextView) findViewById(R.id.video_evaluate);        video_recommend_img = (ImageView) findViewById(R.id.video_recommend_img);        video_evaluate_img = (ImageView) findViewById(R.id.video_evaluate_img);        video_recommend.setTextColor(selectedColor);//        video_recommend_img.setBackground(selectedButton);        video_evaluate.setTextColor(unSelectedColor);//        video_evaluate_img.setBackground(unSelectedButton);        video_recommend.setOnClickListener(new MyOnClickListener(0));        video_evaluate.setOnClickListener(new MyOnClickListener(1));    }    private class MyOnClickListener implements View.OnClickListener {        private int index = 0;        public MyOnClickListener(int i) {            index = i;        }        public void onClick(View v) {            video_playing_viewpager.setCurrentItem(index);        }    }    private void initViewPager() {        video_playing_viewpager = (ViewPager) findViewById(R.id.video_playing_viewpager);        viewList = new ArrayList<View>();        LayoutInflater inflater = getLayoutInflater();        RecommendView = inflater.inflate(R.layout.fragment_recommend, null);        EvaluateView = inflater.inflate(R.layout.fragment_evaluate, null);        viewList.add(RecommendView);        viewList.add(EvaluateView);        video_playing_viewpager.setAdapter(new MyViewPagerAdapter(viewList));        video_playing_viewpager.setCurrentItem(0);        video_playing_viewpager.setOnPageChangeListener(new VideoListOnPageChangeListener());    }    public class VideoListOnPageChangeListener implements ViewPager.OnPageChangeListener {        public void onPageScrollStateChanged(int index) {        }        public void onPageScrolled(int arg0, float arg1, int arg2) {        }        public void onPageSelected(int index) {            switch (index) {                case 0:                    video_recommend.setTextColor(selectedColor);//                    video_recommend_img.setBackground(selectedButton);                    video_evaluate.setTextColor(unSelectedColor);//                    video_evaluate_img.setBackground(unSelectedButton);                    break;                case 1:                    video_recommend.setTextColor(unSelectedColor);//                    video_recommend_img.setBackground(unSelectedButton);                    video_evaluate.setTextColor(selectedColor);//                    video_evaluate_img.setBackground(selectedButton);                    break;            }        }    }    public class MyViewPagerAdapter extends PagerAdapter {        private List<View> mListViews;        public MyViewPagerAdapter(List<View> mListViews) {            this.mListViews = mListViews;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(mListViews.get(position));        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            container.addView(mListViews.get(position), 0);            return mListViews.get(position);        }        @Override        public int getCount() {            return mListViews.size();        }        @Override        public boolean isViewFromObject(View arg0, Object arg1) {            return arg0 == arg1;        }    }    @Override    public void onWindowFocusChanged(boolean hasFocus) {        super.onWindowFocusChanged(hasFocus);    }    class LoadMore implements Runnable {        @Override        public void run() {            getRealUrl(url_info);        }    }    private void getRealUrl(String url_info) {        Map<String, String> map = new LinkedHashMap<>();        map.put("url", url_info);        try {            String backMsg = PostUtil.postData(BaseUrl + GetRealUrl, map);            try {                JSONObject jsonObject = new JSONObject(backMsg);                Message message = Message.obtain();                if (jsonObject.getInt("result") == 1) {                    JSONObject data = jsonObject.getJSONObject("data");                    Bundle bundle = new Bundle();                    bundle.putString("m3u8", data.getString("m3u8"));                    message.setData(bundle);                    message.what = 1;                    uiHandler.sendMessage(message);                } else {                    message.what = 0;                    uiHandler.sendMessage(message);                }            } catch (JSONException e) {                e.printStackTrace();            }        } catch (IOException e) {            e.printStackTrace();        }    }    Handler uiHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            Bundle bundle = msg.getData();            switch (msg.what) {                case 0:                    T.showLong(VideoViewPlayingActivity.this, "视频解析失败");                    break;                case 1:                    mVideoSource = bundle.getString("m3u8");                    mEventHandler = new EventHandler(mHandlerThread.getLooper());                    mEventHandler.sendEmptyMessage(EVENT_PLAY);                    break;            }        }    };    /**     * 初始化界面     */    private void initUI() {        mPlaybtn = (ImageButton) findViewById(R.id.play_btn);        mPrebtn = (ImageButton) findViewById(R.id.pre_btn);        mForwardbtn = (ImageButton) findViewById(R.id.next_btn);        mController = (LinearLayout) findViewById(R.id.controlbar);        mProgress = (SeekBar) findViewById(R.id.media_progress);        mDuration = (TextView) findViewById(R.id.time_total);        mCurrPostion = (TextView) findViewById(R.id.time_current);        registerCallbackForControl();        /**         * 设置ak及sk的前16位         */        BVideoView.setAKSK("kBSfVrlokXqK0cFDYoaRSXle", "MTzMwgYd4CLI5dtIFBY4RZmSW77RnKyD");        /**         *获取BVideoView对象         */        mVV = (BVideoView) findViewById(R.id.video_view);        /**         * 注册listener         */        mVV.setOnPreparedListener(this);        mVV.setOnCompletionListener(this);        mVV.setOnErrorListener(this);        mVV.setOnInfoListener(this);        /**         * 设置解码模式         */        mVV.setDecodeMode(mIsHwDecode ? BVideoView.DECODE_HW : BVideoView.DECODE_SW);    }    /**     * 为控件注册回调处理函数     */    private void registerCallbackForControl() {        mPlaybtn.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                // TODO Auto-generated method stub                if (mVV.isPlaying()) {                    mPlaybtn.setImageResource(R.drawable.play_btn_style);                    /**                     * 暂停播放                     */                    mVV.pause();                } else {                    mPlaybtn.setImageResource(R.drawable.pause_btn_style);                    /**                     * 继续播放                     */                    mVV.resume();                }            }        });        /**         * 实现切换示例         */        mPrebtn.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                /**                 * 如果已经播放了,等待上一次播放结束                 */                if (mPlayerStatus != PLAYER_STATUS.PLAYER_IDLE) {                    mVV.stopPlayback();                }                /**                 * 发起一次新的播放任务                 */                if (mEventHandler.hasMessages(EVENT_PLAY))                    mEventHandler.removeMessages(EVENT_PLAY);                mEventHandler.sendEmptyMessage(EVENT_PLAY);            }        });        mForwardbtn.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                // TODO Auto-generated method stub            }        });        OnSeekBarChangeListener osbc1 = new OnSeekBarChangeListener() {            public void onProgressChanged(SeekBar seekBar, int progress,                                          boolean fromUser) {                // TODO Auto-generated method stub                //Log.v(TAG, "progress: " + progress);                updateTextViewWithTimeFormat(mCurrPostion, progress);            }            public void onStartTrackingTouch(SeekBar seekBar) {                // TODO Auto-generated method stub                /**                 * SeekBar开始seek时停止更新                 */                mUIHandler.removeMessages(UI_EVENT_UPDATE_CURRPOSITION);            }            public void onStopTrackingTouch(SeekBar seekBar) {                // TODO Auto-generated method stub                int iseekPos = seekBar.getProgress();                /**                 * SeekBark完成seek时执行seekTo操作并更新界面                 *                 */                mVV.seekTo(iseekPos);                Log.v(TAG, "seek to " + iseekPos);                mUIHandler.sendEmptyMessage(UI_EVENT_UPDATE_CURRPOSITION);            }        };        mProgress.setOnSeekBarChangeListener(osbc1);    }    private void updateTextViewWithTimeFormat(TextView view, int second) {        int hh = second / 3600;        int mm = second % 3600 / 60;        int ss = second % 60;        String strTemp = null;        if (0 != hh) {            strTemp = String.format("%02d:%02d:%02d", hh, mm, ss);        } else {            strTemp = String.format("%02d:%02d", mm, ss);        }        view.setText(strTemp);    }    @Override    protected void onPause() {        // TODO Auto-generated method stub        super.onPause();        /**         * 在停止播放前 你可以先记录当前播放的位置,以便以后可以续播         */        if (mPlayerStatus == PLAYER_STATUS.PLAYER_PREPARED) {            mLastPos = mVV.getCurrentPosition();            mVV.stopPlayback();        }    }    @Override    protected void onResume() {        // TODO Auto-generated method stub        super.onResume();        Log.v(TAG, "onResume");        if (null != mWakeLock && (!mWakeLock.isHeld())) {            mWakeLock.acquire();        }        /**         * 发起一次播放任务,当然您不一定要在这发起         *///        mEventHandler.sendEmptyMessage(EVENT_PLAY);    }    private long mTouchTime;    private boolean barShow = true;    @Override    public boolean onTouchEvent(MotionEvent event) {        // TODO Auto-generated method stub        if (event.getAction() == MotionEvent.ACTION_DOWN)            mTouchTime = System.currentTimeMillis();        else if (event.getAction() == MotionEvent.ACTION_UP) {            long time = System.currentTimeMillis() - mTouchTime;            if (time < 400) {                updateControlBar(!barShow);            }        }        return true;    }    public void updateControlBar(boolean show) {        if (show) {            mController.setVisibility(View.VISIBLE);        } else {            mController.setVisibility(View.INVISIBLE);        }        barShow = show;    }    @Override    protected void onStop() {        super.onStop();    }    @Override    protected void onDestroy() {        super.onDestroy();        /**         * 退出后台事件处理线程         */        mHandlerThread.quit();    }    @Override    public boolean onInfo(int what, int extra) {        // TODO Auto-generated method stub        switch (what) {            /**             * 开始缓冲             */            case BVideoView.MEDIA_INFO_BUFFERING_START:                break;            /**             * 结束缓冲             */            case BVideoView.MEDIA_INFO_BUFFERING_END:                break;            default:                break;        }        return true;    }    /**     * 当前缓冲的百分比, 可以配合onInfo中的开始缓冲和结束缓冲来显示百分比到界面     */    @Override    public void onPlayingBufferCache(int percent) {        // TODO Auto-generated method stub    }    /**     * 播放出错     */    @Override    public boolean onError(int what, int extra) {        // TODO Auto-generated method stub        Log.v(TAG, "onError");        synchronized (SYNC_Playing) {            SYNC_Playing.notify();        }        mPlayerStatus = PLAYER_STATUS.PLAYER_IDLE;        mUIHandler.removeMessages(UI_EVENT_UPDATE_CURRPOSITION);        return true;    }    /**     * 播放完成     */    @Override    public void onCompletion() {        // TODO Auto-generated method stub        Log.v(TAG, "onCompletion");        synchronized (SYNC_Playing) {            SYNC_Playing.notify();        }        mPlayerStatus = PLAYER_STATUS.PLAYER_IDLE;        mUIHandler.removeMessages(UI_EVENT_UPDATE_CURRPOSITION);    }    /**     * 准备播放就绪     */    @Override    public void onPrepared() {        // TODO Auto-generated method stub        Log.v(TAG, "onPrepared");        mPlayerStatus = PLAYER_STATUS.PLAYER_PREPARED;        mUIHandler.sendEmptyMessage(UI_EVENT_UPDATE_CURRPOSITION);    }}
如果继承的是Activity的话,只会加载相应的布局,fragment不会进行相应的操作

具体的大家可以自己图写个demo体会一下



0 0
原创粉丝点击