一、佈局文件 設置界面,添加一個ImageView,和兩個Button按鈕,設置其屬性及id 二、聲明網路許可權 因為使用網路功能需要添加許可權,修改AndroidManifest.xml文件添加許可權聲明語句。 三、編輯ManActivity.java文件。 四、運行結果 點擊下載按鈕下載圖片。讀取圖片 ...
一、佈局文件
設置界面,添加一個ImageView,和兩個Button按鈕,設置其屬性及id
<ImageView android:id="@+id/ImageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="#ffffff" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="下載圖片" /> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_toRightOf="@+id/bt1" android:text="讀取圖片" />
二、聲明網路許可權
因為使用網路功能需要添加許可權,修改AndroidManifest.xml文件添加許可權聲明語句。
<uses-permission android:name="android.permission.INTERNET"/>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.httpexe"> <uses-permission android:name="android.permission.INTERNET"/>
</manifest>
三、編輯ManActivity.java文件。
import...//import語句自動生成,略
public class MainActivity extends AppCompatActivity { ImageView imageView; Button button; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.ImageView); button = (Button) findViewById(R.id.bt1); button1=(Button)findViewById(R.id.bt2); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyTask task = new MyTask();//創建非同步任務對象 task.execute("https://www.baidu.com/img/bd_logo1.png");//創建下載任務 } }); button1.setOnClickListener(new View.OnClickListener() {//讀取圖片 @Override public void onClick(View v) { Bitmap bmp=null; try{ FileInputStream fis= openFileInput("a.png"); bmp=BitmapFactory.decodeStream(fis); if(bmp!=null) { imageView.setImageBitmap(bmp); } }catch (Exception ex) { } } }); } public class MyTask extends AsyncTask<String, Void, Bitmap> { //bmp點陣圖,泛型 @Override protected Bitmap doInBackground(String... params) { //真正的下載 String urlStr = params[0]; //取第一個變參 Bitmap bmp = null; try { URL url = new URL(urlStr); bmp=BitmapFactory.decodeStream(url.openStream()); //點陣圖工廠,返回bitmap InputStream is= url.openStream(); byte[] buffer=new byte[4096];//byte[]緩衝區 FileOutputStream fos= MainActivity.this.openFileOutput("a.png",MainActivity.MODE_PRIVATE); int hasRead=is.read(buffer); while (hasRead>0){ fos.write(buffer,0,hasRead);//文件大小,起始位置,讀取的量 hasRead=is.read(buffer); } fos.close();//關閉 is.close();//關閉 } catch (Exception ex) { }finally { } return bmp; } @Override protected void onPostExecute(Bitmap bitmap) { if(bitmap!=null){ imageView.setImageBitmap(bitmap); } } }
四、運行結果
點擊下載按鈕下載圖片。讀取圖片按鈕的作用:下載一次後,不需要重新下載。
小記:
java代碼輸入時有些會自動彈出,並匹配到相應包,直接貼會有報錯。