private IDrawTask createDrawTask(
     boolean useDrwaingCache,
     DanmakuTimer timer,
     Context context,
     int width,
     int height,
     boolean isHardwareAccelerated,
     IDrawTask.TaskListener taskListener) {
   mDisp = mContext.getDisplayer();
   mDisp.setSize(width, height);
   DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
   mDisp.setDensities(
       displayMetrics.density, displayMetrics.densityDpi, displayMetrics.scaledDensity);
   mDisp.resetSlopPixel(mContext.scaleTextSize);
   mDisp.setHardwareAccelerated(isHardwareAccelerated);
   IDrawTask task =
       useDrwaingCache
           ? new CacheManagingDrawTask(
               timer,
               mContext,
               taskListener,
               1024 * 1024 * AndroidUtils.getMemoryClass(context) / 3)
           : new DrawTask(timer, mContext, taskListener);
   task.setParser(mParser);
   task.prepare();
   obtainMessage(NOTIFY_DISP_SIZE_CHANGED, false).sendToTarget();
   return task;
 }
  /** 初始化配置 */
  private void initDanmuConfig() {
    // 设置最大显示行数
    HashMap<Integer, Integer> maxLinesPair = new HashMap<Integer, Integer>();
    maxLinesPair.put(BaseDanmaku.TYPE_SCROLL_RL, 2); // 滚动弹幕最大显示2行
    // 设置是否禁止重叠
    HashMap<Integer, Boolean> overlappingEnablePair = new HashMap<Integer, Boolean>();
    overlappingEnablePair.put(BaseDanmaku.TYPE_SCROLL_RL, true);
    overlappingEnablePair.put(BaseDanmaku.TYPE_FIX_TOP, true);

    danmukuContext = DanmakuContext.create();
    danmukuContext
        .setDanmakuStyle(IDisplayer.DANMAKU_STYLE_NONE)
        .setDuplicateMergingEnabled(false)
        .setScrollSpeedFactor(1.2f) // 越大速度越慢
        .setScaleTextSize(1.2f)
        //                .setCacheStuffer(new SimpleTextCacheStuffer(), mCacheStufferAdapter)
        .setCacheStuffer(new BackgroundCacheStuffer(), mCacheStufferAdapter)
        .setMaximumLines(maxLinesPair)
        .preventOverlapping(overlappingEnablePair);
  }