簡単にAndroidを実現してネットのピクチャーを読み込みます。
今日はネットでネットのファイルを読み込む動画を見ました。いいと思います。
考え方
具体的な考え方は簡単ですが、思想はとても単純です。アドレスを入力し、ボタンをクリックして、インターネットから取得した画像をImageViewコントロールに表示します。
このように見れば、私達が使うべき核はネット操作です。はっきり言いますと、ネットストリームのファイルを読みます。
コードの展示
まず、メインインターフェースのレイアウトファイルです。
このコードは非常にシンプルで、コードを貼り付ける主な目的は階層的な思想と再構成された芸術を示すことです。
コードで見ました。専門的なクラスを作って、専門的な仕事を完成します。また、それぞれの階層の種類によって処理される業務も異なります。これは私たちが対象に向かってプログラミングし、より明確な論理をもたらすのに役立ちます。
考え方
具体的な考え方は簡単ですが、思想はとても単純です。アドレスを入力し、ボタンをクリックして、インターネットから取得した画像をImageViewコントロールに表示します。
このように見れば、私達が使うべき核はネット操作です。はっきり言いますと、ネットストリームのファイルを読みます。
コードの展示
まず、メインインターフェースのレイアウトファイルです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/et_website"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="please type the url "
/>
<Button
android:id="@+id/btn_get"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check"
/>
<ImageView
android:id="@+id/iv_picture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
</LinearLayout>
そしてメインインターフェースの論理コードです。
package com.example.getphotobyxml;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.service.ImageService;
public class MainActivity extends Activity {
private EditText mEt_url;
private ImageView mIv_picture;
private Button mBtn_get;
/**
* ID
*/
public void init() {
mEt_url = (EditText) findViewById(R.id.et_website);
mIv_picture = (ImageView) findViewById(R.id.iv_picture);
mBtn_get = (Button) findViewById(R.id.btn_get);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
init();
mBtn_get.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String website = mEt_url.getText().toString();
if (website == null || website.equals("")) {
Toast.makeText(MainActivity.this, " !",
Toast.LENGTH_LONG).show();
return;
}
byte[] bytes;
try {
bytes = ImageService.getImage(website);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0,
bytes.length);
mIv_picture.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
/**
* XML , ImageView
* onClickListener,
* @param view
*/
public void getPicture(View view) {
String website = mEt_url.getText().toString();
if (website == null || website.equals("")) {
Toast.makeText(this, " !", Toast.LENGTH_LONG).show();
return;
}
byte[] bytes;
try {
bytes = ImageService.getImage(website);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0,
bytes.length);
mIv_picture.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
serviceとtoolsアシスタント
package com.example.service;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.example.utils.StreamTool;
/**
*
*/
public class ImageService {
public static byte[] getImage(String website) throws Exception {
URL url = new URL(website);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
InputStream inputStream = conn.getInputStream();
byte[] bytes = StreamTool.read(inputStream);
return bytes;
}
return " ".getBytes();
}
}
package com.example.utils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
/**
* utils
*/
public class StreamTool {
public static byte[] read(InputStream inputStream) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = inputStream.read(buf))!=-1){
baos.write(buf, 0 ,len);
}
baos.close();
return buf;
}
}
締め括りをつけるこのコードは非常にシンプルで、コードを貼り付ける主な目的は階層的な思想と再構成された芸術を示すことです。
コードで見ました。専門的なクラスを作って、専門的な仕事を完成します。また、それぞれの階層の種類によって処理される業務も異なります。これは私たちが対象に向かってプログラミングし、より明確な論理をもたらすのに役立ちます。