android開發之獲取一個頁面的源代碼用一個textview顯示出來

今天面魅族科技的一個題目,但是想使用httpclient來實現,現在想想太過於麻煩了

除此之外還問了一個如何設置主題和如何實現動畫、多線程等問題,答得並不是很好。

下面貼源碼,比較簡單。

注意不要在UI線程內添加複雜的操作,因此需要使用一個新的線程實現獲取頁面源碼的功能,然後利用字節流將其寫入。

package com.example.administrator.firstapplycation;

import android.app.Activity;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.Scroller;
import android.widget.TextView;
import android.widget.Toast;

import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {


    TextView text1;
    private StringBuilder sb = new StringBuilder();
    private Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text1=(TextView) this.findViewById(R.id.txt_vw);
        btn1 = (Button) this.findViewById(R.id.bt_cl);
        btn1.setOnClickListener(new BtClickListner());
        //text1.setScroller(new Scroller(this));
	//添加一個上下滑動效果 , 要在配置文件中將scrollbars 屬性設置爲Vertical
        text1.setMovementMethod(new ScrollingMovementMethod());
    }
    class BtClickListner implements View.OnClickListener{
        @Override
        public void onClick(View v){
            new Thread(){
                public void run(){
                    URL url;
                    try {
                        url = new URL("http://www.cnblogs.com/lance2016/p/6582858.html");
                        InputStream ins =url.openStream();
                        byte[] buf =new byte[1024];
                        int b = 0;
                        while( (b =ins.read(buf) )!=-1){
                            sb.append(new String(buf,0,b));
                        }
                        if(sb!=null){
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                text1.setText(sb.toString());
                            }
                        });}else{
                            Toast.makeText(text1.getContext(),"no data",Toast.LENGTH_LONG).show();
                        }
                        ins.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                }
            }}.start();


        }

    }



}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章