Java tutorial
/* * Copyright (C) 2012 Evgeny Shishkin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.devspark.sidenavigation.meiriyiwen; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.StrictMode; import android.util.Log; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageView; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.devspark.sidenavigation.ISideNavigationCallback; import com.devspark.sidenavigation.SideNavigationView; import com.devspark.sidenavigation.SideNavigationView.Mode; import com.umeng.analytics.MobclickAgent; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import java.io.IOException; /** * * @author e.shishkin * */ public class MainActivity extends SherlockActivity implements ISideNavigationCallback { public static final String EXTRA_TITLE = "com.devspark.sidenavigation.meiriyiwen.extra.MTGOBJECT"; public static final String EXTRA_RESOURCE_ID = "com.devspark.sidenavigation.meiriyiwen.extra.RESOURCE_ID"; public static final String EXTRA_MODE = "com.devspark.sidenavigation.meiriyiwen.extra.MODE"; private ImageView icon; private SideNavigationView sideNavigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); icon = (ImageView) findViewById(android.R.id.icon); sideNavigationView = (SideNavigationView) findViewById(R.id.side_navigation_view); sideNavigationView.setMenuItems(R.menu.side_navigation_menu); sideNavigationView.setMenuClickCallback(this); if (getIntent().hasExtra(EXTRA_TITLE)) { String title = getIntent().getStringExtra(EXTRA_TITLE); int resId = getIntent().getIntExtra(EXTRA_RESOURCE_ID, 0); setTitle(title); icon.setImageResource(resId); sideNavigationView.setMode(getIntent().getIntExtra(EXTRA_MODE, 0) == 0 ? Mode.LEFT : Mode.RIGHT); } StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites() .detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects() .detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); { String title = "http://meiriyiwen.com/index/mobile"; //setTitle(title); WebView uiwebview = (WebView) findViewById(R.id.meiriyiwenWeb); uiwebview.setBackgroundColor(Color.BLACK); uiwebview.setWebViewClient(new Callback()); uiwebview.getSettings().setBuiltInZoomControls(true); uiwebview.getSettings().setJavaScriptEnabled(true); uiwebview.loadUrl(title); } getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.main_menu, menu); if (sideNavigationView.getMode() == Mode.RIGHT) { menu.findItem(R.id.mode_right).setChecked(true); } else { menu.findItem(R.id.mode_left).setChecked(true); } return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: sideNavigationView.toggleMenu(); break; case R.id.mode_left: item.setChecked(true); sideNavigationView.setMode(Mode.LEFT); break; case R.id.mode_right: item.setChecked(true); sideNavigationView.setMode(Mode.RIGHT); break; default: return super.onOptionsItemSelected(item); } return true; } @Override public void onSideNavigationItemClick(int itemId) { switch (itemId) { case R.id.side_navigation_menu_item1: invokeActivity1(getString(R.string.title1), R.drawable.ic_android1); break; case R.id.side_navigation_menu_item2: invokeActivity2(getString(R.string.title2), R.drawable.ic_android2); break; case R.id.side_navigation_menu_item3: invokeActivity3(getString(R.string.title3), R.drawable.ic_android3); break; case R.id.side_navigation_menu_item4: invokeActivity4(getString(R.string.title4), R.drawable.ic_android4); break; case R.id.side_navigation_menu_item5: invokeActivity5(getString(R.string.title5), R.drawable.ic_android5); break; default: return; } finish(); } @Override public void onBackPressed() { // hide menu if it shown if (sideNavigationView.isShown()) { sideNavigationView.hideMenu(); } else { super.onBackPressed(); } } /** * Start activity from SideNavigation. * * @param title title of Activity * @param resId resource if of background image */ private void invokeActivity(String title, int resId) { Intent intent = new Intent(this, MainActivity.class); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_RESOURCE_ID, resId); intent.putExtra(EXTRA_MODE, sideNavigationView.getMode() == Mode.LEFT ? 0 : 1); // all of the other activities on top of it will be closed and this // Intent will be delivered to the (now on top) old activity as a // new Intent. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // no animation of transition overridePendingTransition(0, 0); } private void invokeActivity1(String title, int resId) { Intent intent = new Intent(this, BaseMenuActivity.class); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_RESOURCE_ID, resId); intent.putExtra(EXTRA_MODE, sideNavigationView.getMode() == Mode.LEFT ? 0 : 1); // all of the other activities on top of it will be closed and this // Intent will be delivered to the (now on top) old activity as a // new Intent. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // no animation of transition overridePendingTransition(0, 0); } private void invokeActivity2(String title, int resId) { Intent intent = new Intent(this, baseMenuActivity2.class); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_RESOURCE_ID, resId); intent.putExtra(EXTRA_MODE, sideNavigationView.getMode() == Mode.LEFT ? 0 : 1); // all of the other activities on top of it will be closed and this // Intent will be delivered to the (now on top) old activity as a // new Intent. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // no animation of transition overridePendingTransition(0, 0); } private void invokeActivity3(String title, int resId) { Intent intent = new Intent(this, baseMenuActivity3.class); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_RESOURCE_ID, resId); intent.putExtra(EXTRA_MODE, sideNavigationView.getMode() == Mode.LEFT ? 0 : 1); // all of the other activities on top of it will be closed and this // Intent will be delivered to the (now on top) old activity as a // new Intent. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // no animation of transition overridePendingTransition(0, 0); } private void invokeActivity4(String title, int resId) { Intent intent = new Intent(this, baseMenuActivity4.class); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_RESOURCE_ID, resId); intent.putExtra(EXTRA_MODE, sideNavigationView.getMode() == Mode.LEFT ? 0 : 1); // all of the other activities on top of it will be closed and this // Intent will be delivered to the (now on top) old activity as a // new Intent. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // no animation of transition overridePendingTransition(0, 0); } private void invokeActivity5(String title, int resId) { Intent intent = new Intent(this, baseMenuActivity5.class); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_RESOURCE_ID, resId); intent.putExtra(EXTRA_MODE, sideNavigationView.getMode() == Mode.LEFT ? 0 : 1); // all of the other activities on top of it will be closed and this // Intent will be delivered to the (now on top) old activity as a // new Intent. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // no animation of transition overridePendingTransition(0, 0); } public void onResume() { super.onResume(); MobclickAgent.onResume(this); } public void onPause() { super.onPause(); MobclickAgent.onPause(this); } public String getResultForHttpGet(String inputUrlstring) throws ClientProtocolException, IOException { //? ? servlet?? String path = ""; String uri = path + inputUrlstring; //name:???pwd:?? //?? String result = ""; HttpGet httpGet = new HttpGet(uri);//HttpPost?? HttpResponse response = new DefaultHttpClient().execute(httpGet); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, HTTP.UTF_8); } return result; } private class Callback extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } @Override public void onPageStarted(android.webkit.WebView view, java.lang.String url, android.graphics.Bitmap favicon) { } @Override public void onPageFinished(android.webkit.WebView view, java.lang.String url) { icon.setVisibility(View.INVISIBLE); } @Override public void onReceivedError(android.webkit.WebView view, int errorCode, java.lang.String description, java.lang.String failingUrl) { } } }