package com.example.app;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private TextView mNews;
private TextView interview;
private WebView mWebView;
private ListView listView;
final int RIGHT = 0;
final int LEFT = 1;
private GestureDetector gestureDetector;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
/*-----------------------下载回消息*/
String baseUrl = "http://www.itbuluoge.com/app/newslist.txt";
String outfile=downloadXML(baseUrl);
/*-----------------------格式化*/
List<news> list = new ArrayList<news>();
String[] templist =outfile.split("#");
for(int i=0;i<templist.length;i++)
{
String[] one=templist[i].split("-");
news mynews=new news();
mynews.id=0;
mynews.title=one[0];
mynews.detailed=one[1];
list.add(mynews);
}
/*-----------------------映射到listview上*/
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<list.size();i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("title", list.get(i).title);
map.put("detailed", list.get(i).detailed);
listItem.add(map);
}
listView=(ListView)this.findViewById(R.id.listView);
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源
R.layout.item,
new String[] {"title","detailed"},
new int[] {R.id.title,R.id.detailed}
);
listView.setAdapter(listItemAdapter);
/*-----------------------导航栏点击事件*/
interview=(TextView)findViewById(R.id.interview);
interview.setClickable(true); //设置tv为可点击。
interview.setOnTouchListener(new OnTouchListener()
{ //添加OnClickListener
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
mWebView.loadUrl("http://www.itbuluoge.com/app/index.php?action=interview");
return false;
}
});
gestureDetector = new GestureDetector(MainActivity.this,onGestureListener);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
private GestureDetector.OnGestureListener onGestureListener =
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float x = e2.getX() - e1.getX();
float y = e2.getY() - e1.getY();
if (x > 0) {
doResult(RIGHT);
} else if (x < 0) {
doResult(LEFT);
}
return true;
}
};
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
public void doResult(int action) {
if(action==0)//右边
{
this.mWebView.loadUrl("http://www.itbuluoge.com/app/index.php?action=interview");
}
else
{
this.mWebView.loadUrl("http://www.itbuluoge.com/app/index.php?action=news");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/*-----------------------返回远程字符串*/
public static String downloadXML(final String urlStr)
{
InputStream inStream = null;
URL url = null;
try
{
url = new URL(urlStr);
} catch (MalformedURLException e)
{
e.printStackTrace();
}
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
conn.setConnectTimeout(5 * 1000);
try {
conn.setRequestMethod("GET");
conn.connect();
} catch (Exception e) {
}
try {
inStream= conn.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
StringBuilder sb = null;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream,"utf-8"));
sb= new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return sb.toString();
}
public static String convertStreamToString(InputStream is) throws UnsupportedEncodingException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public static class news{
public int id;
public String title;
public String detailed;
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
}
class webViewClient extends WebViewClient{
//重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
//如果不需要其他对点击链接事件的处理返回true,否则返回false
return true;
}
}
}