SurfaceView返回droidreader黑色屏幕屏幕、黑色、SurfaceView、droidreader

2023-09-08 08:34:56 作者:像情人温柔

我有很多与放审判;甚至很多搜索,但我没有找到关于在黑屏解决方案我获得通过获取的表面观缓存观点..如果有任何其他的方式来捕捉画面,然后让我知道这个..如果我用另一个控制及;获取该控件也返回null的绘制缓存..这是code这是我用来获取屏幕图像....

  {尝试    //按钮BTN =新按钮(mActivity.getApplicationContext());    view.buildDrawingCache();    view.setDrawingCacheEnabled(真);    位图B = view.getDrawingCache();    b.com preSS(比较pressFormat.JPEG,100,新的FileOutputStream(                    到/ mnt / SD卡/文件/+新的Date()的getTime()+.JPEG));}赶上(例外五){    e.printStackTrace();} 

我已经在表面观的touch_up动作用这个.....

编辑:

 公共类DroidReaderActivity延伸活动{私有静态最终布尔LOG = FALSE;私有静态最终诠释REQUEST_ code_PICK_FILE = 1;私有静态最终诠释REQUEST_ code_OPTION_DIALOG = 2;私有静态最终诠释DIALOG_GET_PASSWORD = 1;私有静态最终诠释DIALOG_ABOUT = 2;私有静态最终诠释DIALOG_GOTO_PAGE = 3;私有静态最终诠释DIALOG_WELCOME = 4;私有静态最终诠释DIALOG_ENTER_ZOOM = 5;私有静态最后弦乐preFERENCE_EULA_ACCEPTED =eula.accepted;私有静态最后弦乐preFERENCES_EULA =最终用户许可协议;保护DroidReaderView mReaderView = NULL;保护DroidReaderDocument mDocument = NULL;保护菜单m_ZoomMenu;佛罗里达州的FrameLayout;私人字符串mFilename;私人字符串mTemporaryFilename;私人字符串mPassword;私人诠释mPageNo;私人SQLiteDatabase分贝;静态DatabaseConnectionAPI db_api;私人布尔mD​​ocumentIsOpen = FALSE;私人布尔mLoadedDocument = FALSE;私人布尔mWelcomeShown = FALSE;@覆盖保护无效的onActivityResult(INT申请code,INT结果code,意图数据){    super.onActivityResult(要求code,结果code,数据);    开关(要求code){    案例REQUEST_ code_PICK_FILE:        如果(结果code == RESULT_OK&放大器;&放大器;数据!= NULL){            //理论上有可能是在那里的OnCreate()被调用的情况下            //再与原本是用来打开应用程序的意图,            //这将恢复到previous文件。使用setIntent            //更新将被供给回的OnCreate的意图()。            setIntent(数据);            mTemporaryFilename = data.getDataString();            如果(mTemporaryFilename!= NULL){                如果(mTemporaryFilename.startsWith(文件://)){                    mTemporaryFilename = mTemporaryFilename.substring(7);                }                mPassword =;                openDocumentWithDe codeAndLookup();            }        }        打破;    案例REQUEST_ code_OPTION_DIALOG:        阅读preferences();        tryLoadLastFile();        打破;    }}/ **当第一次创建活动调用。 * /@覆盖公共无效的onCreate(捆绑savedInstanceState){    super.onCreate(savedInstanceState);    的System.out.println(在OnCreate);    db_api =新DatabaseConnectionAPI(本);    尝试{        db_api.createDataBase();        db_api.openDataBase();    }赶上(IOException异常五){        e.printStackTrace();    }    //首先,显示欢迎,如果尚未已经显示出它:    最后一个共享preferences preferences = getShared preferences(preFERENCES_EULA,Context.MODE_PRIVATE);    如果(!preferences.getBoolean(preFERENCE_EULA_ACCEPTED,FALSE)){        mWelcomeShown = TRUE;        preferences.edit()putBoolean(preFERENCE_EULA_ACCEPTED,真).commit()。        的ShowDialog(DIALOG_WELCOME);    }    如果(mDocument == NULL)        mDocument =新DroidReaderDocument();    //初始化PdfRender引擎    PdfRender.setFontProvider(新DroidReaderFontProvider(本));    //然后建立我们的布局。它是如此简单,我们不使用    // XML现在。    FL =新的FrameLayout(本);    mReaderView =新DroidReaderView(这一点,空,mDocument);    //添加观看区和导航    fl.addView(mReaderView);    的setContentView(佛罗里达州);    阅读preferences();    如果(savedInstanceState!= NULL){        mFilename = savedInstanceState.getString(文件名);        如果((新文件(mFilename))。存在()){            mPassword = savedInstanceState.getString(密码);            mDocument.mZoom = savedInstanceState.getFloat(缩放);            mDocument.mRotation = savedInstanceState.getInt(旋转);            mPageNo = savedInstanceState.getInt(页);            mDocument.mMarginOffsetX = savedInstanceState.getInt(marginOffsetX);            mDocument.mMarginOffsetY = savedInstanceState.getInt(marginOffsetY);            mDocument.mContentFitMode = savedInstanceState.getInt(contentFitMode);            使用openDocument();            mLoadedDocument =真;        }        savedInstanceState.clear();    }        定时器mTimer =新的Timer();        mTimer.schedule(新的TimerTask(){            @覆盖            公共无效的run(){                尝试{                    位图saveBitmap = Bitmap.createBitmap(fl.getWidth(),fl.getHeight(),Bitmap.Config.ARGB_8888);                    saveBitmap.com preSS(比较pressFormat.JPEG,100,                            新的FileOutputStream(到/ mnt / SD卡/文件/+新的Date()的getTime()+.JPEG));                }赶上(例外五){                    e.printStackTrace();                }            }        },4000);    }}@覆盖保护无效的onSaveInstanceState(捆绑outState){    super.onSaveInstanceState(outState);    如果((mDocument = NULL)及!&安培; mDocument.isPageLoaded()){        outState.putFloat(放大,mDocument.mZoom);        outState.putInt(旋转,mDocument.mRotation);        outState.putInt(页,mDocument.mPage.no);        outState.putInt(offsetX,mDocument.mOffsetX);        outState.putInt(offsetY,mDocument.mOffsetY);        outState.putInt(marginOffsetX,mDocument.mMarginOffsetX);        outState.putInt(marginOffsetY,mDocument.mMarginOffsetY);        outState.putInt(contentFitMode,mDocument.mContentFitMode);        outState.putString(密码,mPassword);        outState.putString(文件名,mFilename);        mDocument.closeDocument();    }}公共无效的onTap(浮法X,浮法Y){    浮动左,右,上,下​​;    浮动宽度= mDocument.mDisplaySizeX;    浮动高度= mDocument.mDisplaySizeY;    布尔preV = FALSE;    布尔下一= FALSE;    如果(mDocumentIsOpen){        左=宽*(浮点)0.25;        右=宽*(浮点)0.75;        顶部=身高*(浮点)0.25;        底=身高*(浮点)0.75;        如果((X LT;左)及及(Y'LT;顶))            preV =真实的;        如果((X LT;左)及及(Y'GT;底部))            接下来= TRUE;        如果((X GT;右)及及(Y'LT;顶))            preV =真实的;        如果((X GT;右)及及(Y'GT;底部))            接下来= TRUE;        如果((X GT;左)及及(X'LT;右)及及(Y'GT;底部)){            Log.d(DroidReaderMetrics的String.format(变焦=%5.2f %%,mDocument.mZoom * 100.0));            Log.d(DroidReaderMetrics的String.format(页面大小=(%2.0F,2.0F%),mDocument.mPage.mMediabox [2]                             -  mDocument.mPage.mMediabox [0],mDocument.mPage.mMediabox [3]  -  mDocument.mPage.mMediabox [1]));            Log.d(DroidReaderMetrics的String.format(                    显示大小=(%D,%D),mDocument.mDisplaySizeX,mDocument.mDisplaySizeY));            Log.d(DroidReaderMetrics的String.format(DPI =(%D,%D),mDocument.mDpiX,mDocument.mDpiY));            Log.d(DroidReaderMetrics的String.format(内容大小=(%2.0F,2.0F%),                    mDocument.mPage.mContentbox [2]  -  mDocument.mPage.mContentbox [0],                    mDocument.mPage.mContentbox [3]  -  mDocument.mPage.mContentbox [1]));            Log.d(DroidReaderMetrics的String.format(内容偏移量=(%2.0F,2.0F%),                    mDocument.mPage.mContentbox [0],mDocument.mPage.mContentbox [1]));            Log.d(DroidReaderMetrics的String.format(                    文档偏移量=(%D,%D),mDocument.mOffsetX,mDocument.mOffsetY));        }        如果(下){            如果(mDocument.havePage(1,真))                openPage(1,真);        }否则如果(preV){            如果(mDocument.havePage(-1,真))                openPage(-1,真);        }    }}保护无效使用openDocument(){    //保存为previous文档的查看详情并关闭它。    如果(mDocumentIsOpen){        mDocument.closeDocument();        mDocumentIsOpen = FALSE;    }    尝试{        this.setTitle(mFilename);        mDocument.open(mFilename,mPassword,mPageNo);        openPage(0,真);        mDocumentIsOpen = TRUE;    }赶上(PasswordNeededException E){        的ShowDialog(DIALOG_GET_PASSWORD);    }赶上(WrongPasswordException E){        Toast.makeText(这一点,R.string.error_wrong_password,Toast.LENGTH_LONG).show();    }赶上(例外五){        Toast.makeText(这一点,R.string.error_opening_document,Toast.LENGTH_LONG).show();    }}保护无效openDocumentWithDe codeAndLookup(){    尝试{        mTemporaryFilename = URLDe coder.de code(mTemporaryFilename,UTF-8);        //请在所提供的一些文件名完整性检查。        文件f =新的文件(mTemporaryFilename);        如果((f.exists())及及(f.isFile())及及(f.canRead())){            mFilename = mTemporaryFilename;            openDocumentWithLookup();        }其他{            Toast.makeText(这一点,R.string.error_file_open_failed,Toast.LENGTH_LONG).show();        }    }赶上(例外五){        Toast.makeText(这一点,R.string.error_opening_document,Toast.LENGTH_LONG).show();    }}保护无效openDocumentWithLookup(){    readOrWriteDB(假);    使用openDocument();}保护无效openPage(int无,布尔而isRelative){    尝试{        如果((没有== 0安培;!&安培;而isRelative))            mDocument.openPage(无,而isRelative);        this.setTitle(新文件(mFilename).getName()                +的String.format((%D /%D),mDocument.mPage.no,mDocument.mDocument.pagecount));        mPageNo = mDocument.mPage.no;    }赶上(PageLoadException E){    }}私人无效读取preferences(){    共享preferences preFS = preferenceManager.getDefaultShared preferences(本);    DisplayMetrics指标=新DisplayMetrics();    。getWindowManager()getDefaultDisplay()getMetrics(指标)。    如果(prefs.getString(zoom_type,0)。等于(0)){        浮动变焦= Float.parseFloat(prefs.getString(zoom_percent,50));        如果((1