一个android显示远程txt的代码例子
16lz
2021-01-26
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@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubmWebView.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; } } }
更多相关文章
- Android使用GestureDetector实现手势滑动效果
- Android(安卓)编辑框 点击空白处,键盘消失
- Android中button实现onclicklistener事件的两种方法
- AppCompatCheckedTextView
- android ontouch onclick
- Android开发-DesignDemo-AndroidStudio(五)Coordinator
- 点击事件内部类中使用内部类
- Android(安卓)自定义确认提示框,选择确认
- Android:Activity:打开另外的Activity、参数传递