0

当长按快门按钮以激活相机中的连拍时,我想快速更新显示当前照片编号的文本视图。众所周知,我们在Camera中进行连拍,系统很忙,可能不会立即刷新textview。所以我做了一些这样的操作:

  1. 使用 runnable + 处理程序:
  2. 更新当前照片编号时发布可运行文件
  3. 在 run() 中调用 TextView.setText(number)

    private Runnable mShowBurstNumberRunnable = new Runnable() {
    
        public void run() {
            mBurstShotTextView.setText(mCurrentShotsNum);
        }
    }
    
    
    private PictureCallback mContinuousJpegPictureCallback = new PictureCallback() {
        public void onPictureTaken(final byte[]data, android.hardware.Camera camera) {
            ...
            mCurrentShotsNum++;
            mHandler.post(mShowBurstNumberRunnable);
            ...
        }
    }
    

但有时 textview 无法像我预期的那样快速显示数字。我使用的是安卓 4.2。

4

1 回答 1

0

您应该确保发布您的 mShowBurstNumberRunnable 的 mHandler 已附加在主线程上。只有主线程可以更改 UI。

你也可以试试这个

private PictureCallback mContinuousJpegPictureCallback = new PictureCallback() {
    public void onPictureTaken(final byte[]data, android.hardware.Camera camera) {
        ...
        mCurrentShotsNum++;
        mBurstShotTextView.post(mShowBurstNumberRunnable);
        ...
    }
}
于 2013-07-11T07:28:27.347 回答