 <p><strong>Should I even be using ImageView? I've seen some answers suggesting that a WebView is a better starting point.</strong></p> <p>This is the way I solved it in the end. I simply wrapped the image filename in some HTML and gave it to a webview.</p> <p>This gave me the following specific benefits:-</p> <ul> <li>The detailed user behaviour (eg. zoom rate, pinch sensitivity, availability of an on screen control) were consistent with the browser, and so familiar to the user's muscle memory</li> <li>I don't need to depend on any third party code</li> <li>Since it's core Android, it's probably better tested against edge cases (eg. one library I considered didn't support landscape)</li> <li>I don't need to worry about out of memory situations with Bitmap processing</li> <li>In the future, I might want to provide "web page" as one of the items in my ViewPager anyway, so one stone, two birds.</li> </ul> <p>Here is the code I ended up with.</p> <pre><code>File imgFile = new File(FILESDIR,FILENAME); if(imgFile.exists()){ WebView wv = (WebView) rootView.findViewById(R.id.imageView1); wv.getSettings().setBuiltInZoomControls(true); wv.getSettings().setDisplayZoomControls(true); String html = ("&lt;html&gt;&lt;img src='"+imgFile.getName()+"'&gt;&lt;/html&gt;" ); wv.loadDataWithBaseURL("file://"+imgFile.getAbsolutePath(), html, "text/html", "utf-8", ""); } </code></pre>