Refactoring the next one of their own news clients, all using fragment for page switching, only one entry activity as the start of the program activity, one of the interface needs to call the camera to identify two-dimensional code, and then use the Surfaceview to preview, So here's the problem, when switching to the corresponding fragment, the screen will be black, black for about 1 seconds to show the normal interface, and this phenomenon is only the first time to enter the fragment will appear, after the entry will not appear, the solution is not intended to see on the GitHub, tried, It can be done through, and the solution is posted below.
Method One, add the following code in the OnCreate of the activity
Copy Code code as follows:
GetWindow (). SetFormat (pixelformat.translucent);
But if you do that in fragment, it doesn't seem to work.
Method Two, in root view of activity add a long width is 0px and invisible surfaceview element.
Reason:
Surfaceview because it is different from the general view, it has its own good buffering and data access mechanism, the system has special treatment for him. When Surfaceview first in the current activity to add, the system will rearrange the layout of the WindowManager, Relayout, this will be black, this will only appear in the first, later add Surfaceview will not be black screen.
In your own project, because all use fragment to switch pages, only one activity is declared in the manifest file, but the code can configure whether or not new activity is opened as a fragment container, Since I don't want to add code GetWindow (). SetFormat (pixelformat.translucent) To this activity, I used the new activity as the container for this fragment, so the problem was solved.
The code with the splash screen is like this.
private static final int request_code_scan = 1;
Openpageforresult ("Scan", Null,coreanim.slide,request_code_scan);
But this function has an overloaded function that is whether to start a new activity, using overloaded functions to solve
private static final int request_code_scan = 1;
Openpageforresult (True, "scan", Null,coreanim.slide,request_code_scan);
Function prototypes
/**
* Open fragment and request a return value and set whether to open in the new activity
* @param newactivity whether the new activity
* @param pagename page name
* @param bundle Parameter
* @param coreanim animation
* @param requestcode Request Code
* @return Open Fragment object/
public
FINA L Fragment Openpageforresult (boolean newactivity, String pagename, Bundle Bundle, Coreanim coreanim, int requestcode);
The above content is this article gives everybody to share the Android fragment to use Surfaceview to flash a black screen solution, hope to be helpful to everybody.