Xml
<?XML version= "1.0"?>-<LinearLayoutTools:context=". Mainactivity "Android:paddingtop= "@dimen/activity_vertical_margin"Android:paddingright= "@dimen/activity_horizontal_margin"Android:paddingleft= "@dimen/activity_horizontal_margin"Android:paddingbottom= "@dimen/activity_vertical_margin"android:orientation= "vertical"Android:layout_height= "Match_parent"Android:layout_width= "Match_parent"Xmlns:tools= "Http://schemas.android.com/tools"xmlns:android= "Http://schemas.android.com/apk/res/android"><EditTextAndroid:id= "@+id/et_url"Android:layout_height= "Wrap_content"Android:layout_width= "Fill_parent"Android:text= "Http://www.baidu.com"/><ButtonAndroid:id= "@+id/bt_looksource"Android:layout_height= "Wrap_content"Android:layout_width= "Fill_parent"Android:text= "View Picture"/>-<ScrollViewAndroid:layout_height= "Wrap_content"Android:layout_width= "Wrap_content"><ImageViewAndroid:id= "@+id/img_pic"Android:layout_height= "Match_parent"Android:layout_width= "Match_parent"/></ScrollView></LinearLayout>
Picture View Controls
Java
PackageCom.itheima.sourcelook;ImportJava.io.InputStream;Importjava.net.HttpURLConnection;ImportJava.net.URL;Importjava.net.URLConnection;ImportAndroid.os.Bundle;ImportAndroid.os.Handler;ImportAndroid.os.Looper;ImportAndroid.os.Message;Importandroid.app.Activity;ImportAndroid.content.Context;ImportAndroid.graphics.Bitmap;Importandroid.graphics.BitmapFactory;Importandroid.text.TextUtils;ImportAndroid.view.Menu;ImportAndroid.view.View;ImportAndroid.view.View.OnClickListener;ImportAndroid.widget.Button;ImportAndroid.widget.EditText;ImportAndroid.widget.ImageView;ImportAndroid.widget.TextView;ImportAndroid.widget.Toast;ImportCOM.ITHEIMA.PICLOOK.R; Public classMainactivityextendsActivityImplementsonclicklistener{PrivateEditText Et_url; PrivateImageView Img_pic; PrivateContext Mcontext; @Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); Mcontext= This; Et_url=(EditText) Findviewbyid (R.id.et_url); Button Bt_looksource=(Button) Findviewbyid (R.id.bt_looksource); Img_pic=(ImageView) Findviewbyid (r.id.img_pic); //two. Set Click eventsBt_looksource.setonclicklistener ( This); System.out.println ("OnCreate method Thread:" +Thread.CurrentThread (). GetName ()); } //☆☆☆1. Creating a Handler object in the main thread PrivateHandler Handler =NewHandler () {//☆☆☆2. Overriding the Handlermessage method of handler to receive messages sent from a child thread Public voidhandlemessage (android.os.Message msg) {//☆☆☆5. Receives the data sent by the child thread and processes the data. Bitmap Bitmap =(Bitmap) msg.obj; //☆☆☆6. Current method belongs to the main thread can do UI updates//Five. Get the content returned by the server and display it on TextViewImg_pic.setimagebitmap (bitmap);//set the picture content of ImageView }; }; @Override Public voidOnClick (View v) {Try{ //three. Get the URL address of the user input in the Oclick method FinalString Url_str =Et_url.gettext (). toString (). Trim (); if(Textutils.isempty (url_str)) {Toast.maketext (Mcontext,"URL cannot be empty", 0). Show (); return ; } System.out.println ("Oclick method Thread:" +Thread.CurrentThread (). GetName ()); //Create a child thread to make a network request NewThread (NewRunnable () {@Override Public voidrun () {Try{System.out.println ("Oclick method runnable Thread:" +Thread.CurrentThread (). GetName ()); //four. Request URL address//1. Create a URL objectURL url =NewURL (URL_STR); //2. Get a URLConnection objectHttpURLConnection connection =(HttpURLConnection) url.openconnection (); //3. Set some request parameters for the URLConnection object, the request method, the connection timeout timeConnection.setrequestmethod ("GET");//Set Request ModeConnection.setconnecttimeout (1000*10);//setting the time-out period//4. Need to determine the response code before obtaining the data for the URL request, 200: Success, 206: Access to partial data success 300: Jump or redirect 400: Error 500: Server Exception intCode =Connection.getresponsecode (); if(Code = = 200){ //5. Get valid data and parse the obtained stream data into a stringInputStream InputStream =Connection.getinputstream (); //convert a read stream to a picture drawable, Btimap: Bitmap?????Bitmap Bitmap =Bitmapfactory.decodestream (InputStream); //☆☆☆3. Create a Message object in the child line, in order to carry the data obtained from the child thread to the main thread. Message msg = Message.obtain ();//gets a Message object in which the internal implementation is: If the previous message exists directly back, there is no new message created to returnMsg.obj = bitmap;//encapsulates the acquired data into a MSG. //☆☆☆4. Use the handler object to send a message to the main thread. handler.sendmessage (msg); } }Catch(Exception e) {e.printstacktrace (); }}). Start (); }Catch(Exception e) {e.printstacktrace (); } }}
mainactivity
BYTE stream operation
PackageCom.itheima.sourcelook;ImportJava.io.ByteArrayOutputStream;ImportJava.io.InputStream; Public classStreamutils { Public Staticstring streamtostring (InputStream in) {string result=""; Try{ //create a byte array to write to a streamBytearrayoutputstream out =NewBytearrayoutputstream (); byte[] buffer =New byte[1024]; intLength = 0; while(length = in.read (buffer))!=-1) {out.write (buffer,0, length); Out.flush (); } result= Out.tostring ();//convert byte stream to stringOut.close (); }Catch(Exception e) {e.printstacktrace (); } returnresult; }}
streamutils
Teacher Notes
04 Network Picture Viewer
ADB shell+ input text content; You can enter the content into the input box on your phone.
Convert a read flow to a Bitmap object:
Bitmapfactory: You can convert a file, read stream, and byte array into a Bitmap object.
Bitmap Bitmap = Bitmapfactory.decodestream (InputStream in);
Imageview.setimagebitmap (bitmap);//Set Picture contents
Android Network-Network picture Viewer