반응형
버튼을 누르면 이미지가 보이는 예제
(이미지는 인터넷의 주소로 가져온다. 내가 이미지 파일이 없어도 됨... Thread와 Stream 사용)
activity_main.xml 코드부터 작성하자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="load Image"
android:onClick="clickBtn"/>
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
|
MainActivity.java 코드 작성하자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
package com.lcw.ex33threadnetimage;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=findViewById(R.id.iv);
}
public void clickBtn(View view) {
//Network상에 있는 이미지를 읽어와서 이미지뷰에 보여주기
//Network작업은 오래걸리는 작업으로 인지하므로..
//MainThread에서 작업할 수 없음.
//별도의 Thread를 생성해서 네트워크 작업을 수행하도록..
new Thread(){
@Override
public void run() {
//이미지의 경로
//Stream을 열수 있는 (URL)객체 생성
try {
URL url= new URL(imgUrl);
//무지개로드 (Stream)을 얻어오기
InputStream is=url.openStream();
//스트림을 통해 이미지를 읽어와서
//이미지뷰에 설정!
final Bitmap bm= BitmapFactory.decodeStream(is);//BitmapFactory가 png파일을 비트맵으로 만들어준다.
//final로 만든 이유는.. 아래 run메소드에서 지역 변수라 못알아먹으니 final 또는 멤버변수로 해야함.
//화면 갱신 / UI변경(이미지 변경)은 MainThread만 할 수 있음.
runOnUiThread(new Runnable() {
@Override
public void run() {
iv.setImageBitmap(bm);
}
});
} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}// run() ..
}.start();
}
}
|
위 java 코드 36번 줄에 https://t1.daumcdn.net/news/201901/25/seouleconomy/20190125151705325mnun.png이거는 어떻게 얻는지 알려줌. 원하는 이미지 주소 인터넷에 가져오기
그리고 중요한 것!!!!!
AndroidManigest.xml 에 한줄만 추가하자
<uses-permission android:name="android.permission.INTERNET"/>
(이미지는 인터넷으로 불러오는 거기 때문에 꼭!!!명시해야 한다!!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?xml version="1.0" encoding="utf-8"?>
<!-- 이 앱이 인터넷을 사용한다는 허가를 받아야 함-->
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
</intent-filter>
</activity>
</application>
</manifest>
|
반응형
'안드로이드 웹앱 콘테츠 개발자 양성(국비지원) > Thread' 카테고리의 다른 글
Android Studio Thread 4 (0) | 2019.09.19 |
---|---|
Android Studio Thread 2 (0) | 2019.09.19 |
Android Studio Thread 1 (0) | 2019.09.19 |
댓글