package net.dev123.yibo; import java.io.File; import net.dev123.yibo.common.theme.ThemeUtil; import net.dev123.yibo.service.listener.ImageViewerSaveClickListener; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.KeyEvent; import android.view.View; import android.webkit.WebView; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import com.mobclick.android.MobclickAgent; public class ImageWebViewerActivity extends Activity { @SuppressWarnings("unused") private static final String TAG = ImageWebViewerActivity.class.getSimpleName(); private static final int INTERNAL_DISTANCE = 8; private static String WEB_HTML = //"<img style=\"max-width: %1$d px;\" src=\"%2$s\"/>"; "<table style=height:100%%;width:100%%;margin:0;padding:0;border:0;>" + "<tr>" + "<td style=\"vertical-align:middle;text-align:center;\">" + "<img style=\"max-width:%1$dpx;\" src=\"%2$s\" />" + "</td>" + "</tr>" + "</table>"; boolean isGif = false; private String realPath; private String imageUrl; private WebView webViewer; private int orientation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.image_web_viewer); TextView tvTitle = (TextView) this.findViewById(R.id.tvTitle); tvTitle.setText(R.string.title_image_viewer); orientation = this.getResources().getConfiguration().orientation; initComponent(this.getIntent()); bindEvent(); } private void initComponent(Intent intent) { LinearLayout llHeaderBase = (LinearLayout)findViewById(R.id.llHeaderBase); ThemeUtil.setSecondaryImageHeader(llHeaderBase); if (intent == null) { return; } Bundle bundle = intent.getExtras(); realPath = bundle.getString("image-path"); imageUrl = Uri.fromFile(new File(realPath)).toString(); String html = String.format(WEB_HTML, getMaxWidth(), imageUrl); webViewer = (WebView) findViewById(R.id.wvImageViewer); webViewer.getSettings().setSupportZoom(true); webViewer.getSettings().setBuiltInZoomControls(true); webViewer.setBackgroundColor(Color.BLACK); webViewer.setVerticalScrollBarEnabled(false); webViewer.setHorizontalScrollBarEnabled(false); //webViewer.setOnTouchListener(new ImageWebViewDoubleClickListener()); webViewer.loadDataWithBaseURL("", html, "text/html", "UTF-8", ""); } private void bindEvent() { Button back = (Button) this.findViewById(R.id.btnBack); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((Activity) v.getContext()).finish(); } }); Button btnSave = (Button) findViewById(R.id.btnOperate); btnSave.setVisibility(View.VISIBLE); btnSave.setText(R.string.btn_save); ImageViewerSaveClickListener saveListener = new ImageViewerSaveClickListener(realPath); btnSave.setOnClickListener(saveListener); } private int getMaxWidth() { int maxWidth = 0; if (orientation == Configuration.ORIENTATION_PORTRAIT) { maxWidth = YiBoApplication.getDisplayWidth(); } else { maxWidth = YiBoApplication.getDisplayHeight(); } maxWidth = maxWidth * DisplayMetrics.DENSITY_DEFAULT / YiBoApplication.getDensityDpi() - INTERNAL_DISTANCE * 2; return maxWidth; } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); orientation = newConfig.orientation; String html = String.format(WEB_HTML, getMaxWidth(), imageUrl); webViewer.loadDataWithBaseURL("", html, "text/html", "UTF-8", ""); } @Override protected void onDestroy() { super.onDestroy(); if (webViewer != null) { webViewer.setVisibility(View.GONE); webViewer.clearCache(true); webViewer.clearHistory(); webViewer.destroy(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // Take care of calling this method on earlier versions of // the platform where it doesn't exist. onBackPressed(); } return super.onKeyDown(keyCode, event); } @Override public void onBackPressed() { // This will be called either automatically for you on 2.0 // or later, or by the code above on earlier versions of the // platform. finish(); } @Override protected void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPause(this); } }