Change page layout dynamically based on orientation
If you want to display pages in double-page mode in landscape mode and single-page mode in portrait mode, you can do so with the following snippet:
class DynamicPageLayoutActivity : PdfActivity() {
override fun onCreate(savedInstanceState: Bundle) { val isLandscape = resources.configuration.orientation == ORIENTATION_LANDSCAPE val pageLayoutMode = if (isLandscape) PageLayoutMode.DOUBLE else PageLayoutMode.SINGLE val newConfiguration = PdfActivityConfiguration.Builder(configuration) .layoutMode(pageLayoutMode) .build()
configuration = newConfiguration
// Make sure to call super on the parent `PdfActivity`. super.onCreate(savedInstanceState) }}
public class DynamicPageLayoutActivity extends PdfActivity {
@Override protected void onCreate(Bundle savedInstanceState) { boolean isLandscape = getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE; PageLayoutMode pageLayoutMode = isLandscape ? PageLayoutMode.DOUBLE : PageLayoutMode.SINGLE; PdfActivityConfigurations newConfiguration = new PdfActivityConfiguration.Builder(configuration) .layoutMode(pageLayoutMode) .build()
// Set the new configuration. setConfiguration(newConfiguration);
// Make sure to call super on the parent `PdfActivity`. super.onCreate(savedInstanceState); }}
Note that the PageLayoutMode#AUTO
setting leads to similar behavior, where double-page mode is enabled in landscape mode, but only for devices with a screen width larger than 540dp (e.g. tablets).