안드로이드 ImageButton 테두리 - andeuloideu ImageButton teduli

ImageView에 테두리를 넣는 방법이 필요하신 분이 있으실 것 같아서 공유합니다.
이 방법 외에도 다른 방법도 있을 것 같으니 참고 하시는 정도로 보시면 좋을 것 같습니다.

테두리가 없는 AlarmClcok의 이미지를 ImageView에 표시한 화면입니다.

 

ImageVIew에 테두리를 넣기위해서 ShapeDrawable을 이용합니다.
ShapeDrawble는 코드로 간단하게 색을체우거나 그라데이션 효과를 줄 수있는 기능을 제공합니다.
자세한 사항은 //www.androidpub.com/2113 을 참고하세요

ShapeDrawble을 ImageVIew에 사용하기 위해서 image_border.xml을 만들어서 Drawable 폴더에 넣습니다.
 image_border.xml의 소스 입니다.

 <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="//schemas.android.com/apk/res/android">
  <solid android:color="#0fff"/>
    <stroke android:width="1px" android:color="#ffaeaeae" />
    <padding android:left="1px" android:top="1px"
            android:right="1px" android:bottom="1px" />
</shape>

간단하게 설명하면 solid는 해당 View를 채우는 설정입니다.
stroke는 View의 테두리를 설정해줍니다. padding은 view의 padding값을 설정해 줍니다.
위의 ShapeDrawable을 테두리를 설정해줄 ImageView에 지정을 해줍니다.

 해당 ImageView 소스입니다.

 <ImageView
     android:id="@+id/border_image"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center_horizontal"
     android:src="@drawable/image_border"
     android:background="@drawable/clockdroid2_dial" />     

위의 소스를 적용한 화면입니다.

위의 화면과 같이 ImageView에 테두리가 들어간것을 확인 하실수 있습니다.
위에서와 같이 xml에 ShapeDrawable을 설정하지 않고 코드상에서 설정 하실수도 있습니다.

 ImageView iv = (ImageView)findViewById(R.id.border_image);
  Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.clockdroid2_dial);
  iv.setBackgroundResource(R.drawable.image_border);
  iv.setImageBitmap(bitmap);

도움이 되셨으면 좋겠네요~

이번 글에서는 안드로이드 기본 위젯인 버튼의 모서리를 둥글게 만들어 보겠습니다.

아래 그림과 같이 drawable을 우클릭하여 Drawable Resource File을 선택합니다.

그 다음 아래와 같이 round_button, selector를 입력하신 뒤 OK 버튼을 누릅니다.

위 작업을 모두 수행 하셨다면 아래 그림과 같이 round_button.xml이 생성됩니다.

round_button.xml에 아래와 같이 코딩합니다.

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="//schemas.android.com/apk/res/android" > <!-- 평상시 --> <item android:state_pressed="false"> <shape> <!-- 배경 --> <solid android:color="#ffffffff" /> <!-- 테두리 --> <stroke android:width="1dp" android:color="#ffaaaaaa" /> <corners android:bottomLeftRadius="30dp" android:bottomRightRadius="30dp" android:topLeftRadius="30dp" android:topRightRadius="30dp" /> </shape> </item> <!-- 클릭했을 때 --> <item android:state_pressed="true"> <shape> <!-- 배경 --> <solid android:color="#ff000000" /> <!-- 테두리 --> <stroke android:width="1dp" android:color="#ff888888" /> <!-- 코너 둥근 정도 --> <corners android:bottomLeftRadius="30dp" android:bottomRightRadius="30dp" android:topLeftRadius="30dp" android:topRightRadius="30dp" /> </shape> </item> </selector>

android:state_pressed에서 true, false로 눌린 상태인지, 눌리지 않은 상태를 구분합니다.

activity_main.xml로 이동해서 아래와 같이 Button을 입력합니다.

android:background를 부분에 방금 만든 round_button.xml을 입력합니다.

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="//schemas.android.com/apk/res/android" xmlns:app="//schemas.android.com/apk/res-auto" xmlns:tools="//schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" android:background="@drawable/round_button"/> <!-- round_button 입력 --> </androidx.constraintlayout.widget.ConstraintLayout>

실행시켜 확인해봅니다.

만약 버튼의 색상이 변하지 않는다면 테마에 Theme.AppCompat.Light.NoActionBar 속성을 줍니다.

Toplist

최신 우편물

태그