camera module controll bar 隐藏显示控制

本文档详细介绍了相机应用程序中模块控制流程和关键计时参数的设置,包括配置文件config.xml中的超时时间设定,如multiToggleItems_timeout和control_timeout,以及XXXModule类中布局隐藏和消失时间的管理。此外,还描述了CameraActivity如何处理模块切换、触摸事件和自动完成计时。

1.   config.xml

  配置 各种  timeout 时间

 


   <integer name="multitoggleitems_timeout">3000</integer>
   <integer name="controll_timeout">3000</integer>

2.  XXXModule


   public class XXXModule
           implements CameraModule, PhotoController,CaptureController,xxx{

    private static final int LAYOUT_HIDE = 100 ;
    private static final int DISAPPEAR_TIME = 3000 ;

    public void onResumeAfterSuper() {
      mActivity.onModuleSelected(ModuleSwitcher.CAPTURE_MODULE_INDEX);
    }

    Handler {
        switch (msg.what) { 
          hideviews();
       }
    }

    public void hideLayout(){
        mHandler.removeMessages(HIDE_LAYOUT);
        mHandler.sendEmptyMessage(HIDE_LAYOUT);
    }

    public void hideLayout(boolean isTouch){
        if (isTouch) {
            mHandler.removeMessages(HIDE_LAYOUT);
        } else {
            mHandler.sendEmptyMessageDelayed(HIDE_LAYOUT, DISAPPEAR_TIME);
        }
    }

    public CaptureUI getUI(){
        return mUI;
    }

   }

3. CameraActivity

CameraActivity {

   private long time= 1000 * 60 * 2;
   private ModuleSwitcherManager mModuleSwitcherManager;

   oncreate(){
         //module controll
        mModuleSwitcherManager = new ModuleSwitcherManager();
        mModuleSwitcherManager.create(this ,mCameraRootFrame);
        mModuleSwitcherManager.setOnModuleChangeListener(this);
        mCurrentModule = mModuleSwitcherManager.getCurrentCameraModule();
   }

   @Override
   public void onModuleSelected(int moduleIndex) {
        checkIfNeedRestartCountDown(null);
   }

   //auto finish
   private Runnable finishActivityRunnable = new Runnable() {
        @Override
        public void run() {
           finish();
        }
    };

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        .....
        checkIfNeedRestartCountDown(ev);
        return result;
    }

    public void checkIfNeedRestartCountDown(MotionEvent ev){
        boolean isRecording = false;
        mMainHandler.removeCallbacks(mFinishActivityRunnable);

        if (ev == null || ev.getActionMasked() == MotionEvent.ACTION_DOWN) {

            if (mModuleSwitcherManager.getCurrentCameraModule() instanceof PhotoModule) {
                ((PhotoModule) mModuleSwitcherManager.getCurrentCameraModule()).hideLayout(true);
            }

            if (mModuleSwitcherManager.getCurrentCameraModule() instanceof CaptureModule) {
                ((CaptureModule) mModuleSwitcherManager.getCurrentCameraModule()).hideLayout(true);
            }
        }

        if (ev == null || ev.getAction() == MotionEvent.ACTION_UP) {
            if (mModuleSwitcherManager.getCurrentCameraModule() instanceof PhotoModule) {
                ((PhotoModule) mModuleSwitcherManager.getCurrentCameraModule()).hideLayout(false);
                ((PhotoModule) mModuleSwitcherManager.getCurrentCameraModule()).getPhotoUI().setTouchEvent(true);
            }

            if (mModuleSwitcherManager.isVideoModule(mModuleSwitcherManager.getCurrentModuleIndex())) {
                isRecording = true;
            }

            if(!isRecording)
                mMainHandler.postDelayed(finishActivityRunnable, time);

            if (mModuleSwitcherManager.getCurrentCameraModule() instanceof CaptureModule) {
                ((CaptureModule) mModuleSwitcherManager.getCurrentCameraModule()).hideLayout(false);
                ((CaptureModule) mModuleSwitcherManager.getCurrentCameraModule()).getUI().setTouchEvent(true);
            }
        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李磊LL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值