728x90
728x170
- 안드로이드에서는 다른 언어에서처럼 스크롤바를 일일이 뷰의 보이는 영역과 연결하는 과정 없이 단순히 스크롤뷰 안에 뷰를 넣는 것으로 스크롤이 가능함.
- 스크롤뷰에 뷰를 넣기 위해서는 ScrollView 태그를 사용하며 그 안에는 한 개의 뷰가 들어갈 수 있음.
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 |
<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" >
<Button
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="이미지 바꾸어 보여주기"
android:onClick="onButton1Clicked"
/>
<HorizontalScrollView // 수평 스크롤을 위한 스크롤뷰
android:id="@+id/horScrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ScrollView // 수직 스크롤을 위한 스크롤뷰
android:id="@+id/scrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/imageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</ScrollView>
</HorizontalScrollView>
</LinearLayout>
|
cs |
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
67 |
package org.androidtown.ui.scrollview;
import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ScrollView;
public class MainActivity extends AppCompatActivity {
ScrollView scrollView01;
ImageView imageView01;
BitmapDrawable bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
scrollView01 = (ScrollView) findViewById(R.id.scrollView01);
imageView01 = (ImageView) findViewById(R.id.imageView01);
Button button01 = (Button) findViewById(R.id.button01);
// 가로 스크롤뷰의 메소드 호출
scrollView01.setHorizontalScrollBarEnabled(true);
// drawable 리소스에 있는 이미지를 가져와서 이미지뷰에 설정하기
Resources res = getResources();
bitmap = (BitmapDrawable) res.getDrawable(R.drawable.image01);
int bitmapWidth = bitmap.getIntrinsicWidth();
int bitmapHeight = bitmap.getIntrinsicHeight();
imageView01.setImageDrawable(bitmap);
imageView01.getLayoutParams().width = bitmapWidth;
imageView01.getLayoutParams().height = bitmapHeight;
}
/**
* 버튼을 눌렀을 때 이미지 바꾸어 보여주기
* @param v
*/
public void onButton1Clicked(View v) {
changeImage();
}
/**
* 다른 이미지로 바꾸어 보여주기
*/
private void changeImage() {
Resources res = getResources();
bitmap = (BitmapDrawable) res.getDrawable(R.drawable.image02);
int bitmapWidth = bitmap.getIntrinsicWidth();
int bitmapHeight = bitmap.getIntrinsicHeight();
imageView01.setImageDrawable(bitmap);
imageView01.getLayoutParams().width = bitmapWidth;
imageView01.getLayoutParams().height = bitmapHeight;
}
}
|
cs |
- getIntrinsicWidth()와 getIntrinsicHeight() 메소드를 이용하면 원본 이미지의 가로와 세로 크기를 알 수 있으며, 이렇게 알아낸 가로와 세로의 크기값은 이미지뷰에 설정된 LayoutParams 객체의 width와 height 속성을 이용해 설정할 수 있음.
- changeImage() 메소드는 화면의 상단에 추가된 버튼을 눌렀을 때 이미지뷰에 들어갈 이미지를 바꿔주는 역할을 함. → 메인 액티비티를 초기화하는 onCreate() 안의 코드와 유사한 코드가 들어가 있음.
출처 : Do It! 안드로이드 앱 프로그래밍 (정재곤 지음, 이지스퍼블리싱)
728x90
그리드형(광고전용)
'Programming > Android' 카테고리의 다른 글
수명주기 (0) | 2017.01.24 |
---|---|
레이아웃 인플레이션 (0) | 2017.01.18 |
기본 위젯들 (0) | 2017.01.17 |
프레임 레이아웃과 뷰의 전환 (0) | 2017.01.17 |
테이블 레이아웃 (0) | 2017.01.17 |
상대 레이아웃 (0) | 2017.01.17 |
리니어 레이아웃 (0) | 2017.01.16 |
레이아웃 (0) | 2017.01.16 |