Android에서 이미지 보기의 경계?
의 경계를 설정하려면 어떻게 해야 합니까?ImageView
Android에서 색상을 변경하시겠습니까?
아래 xml을 이미지 보기 배경에 그리기 가능으로 설정했습니다.그건 효과가 있다.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="#000000" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
그리고 추가합니다.android:background="@drawable/yourXmlFileName"
의 신에게에.ImageView
다음은 제가 검은 테두리를 두르던 코드입니다.테두리에 추가 xml 파일을 사용하지 않았습니다.
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/red_minus_icon"
android:background="#000000"
android:padding="1dp"/>
ImageView
filexml 파일입니다.
<ImageView
android:id="@+id/myImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:padding="1dp"
android:scaleType="centerCrop"
android:cropToPadding="true"
android:background="@drawable/border_image"
android:src="@drawable/ic_launcher" />
을 코드 아 래저장로으름이에:border_image.xml
그리고 그것은 그릴 수 있는 폴더에 있어야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="#ffffff"
android:startColor="#ffffff" />
<corners android:radius="0dp" />
<stroke
android:width="0.7dp"
android:color="#b4b4b4" />
</shape>
이미지의 테두리에 둥근 모서리를 주고 싶다면 border.xml 파일에서 줄을 변경할 수 있습니다.
<corners android:radius="4dp" />
이건 제가 아는 오래된 게시물이지만, 저는 이것이 누군가를 도울 수도 있다고 생각했습니다.
도형의 "단색" 색상과 겹치지 않는 반투명 테두리를 시뮬레이션하려면 xml에 사용합니다.여기서 "획" 태그는 항상 실제 그려진 모양과 겹치기 때문에 사용하지 않습니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#55111111" />
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<solid android:color="#ff252525" />
</shape>
</item>
</layer-list>
테두리 만들기
그리기 가능한 폴더에 다음 내용을 포함하는 xml 파일(예: "frame_image_view.xml")을 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="@dimen/borderThickness"
android:color="@color/borderColor" />
<padding
android:bottom="@dimen/borderThickness"
android:left="@dimen/borderThickness"
android:right="@dimen/borderThickness"
android:top="@dimen/borderThickness" />
<corners android:radius="1dp" /> <!-- remove line to get sharp corners -->
</shape>
를 바꿉니다.@dimen/borderThickness
그리고.@color/borderColor
원하는 대로 사용하거나 해당 치수/색상을 추가합니다.
그리기 가능한 배경을 이미지 보기에 추가합니다.
<ImageView
android:id="@+id/my_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/frame_image_view"
android:cropToPadding="true"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />
은 야합다니해를 사용해야 .android:cropToPadding="true"
그렇지 않으면 정의된 패딩은 영향을 받지 않습니다. 체용도를 사용합니다.android:padding="@dimen/borderThickness"
이미지 보기에서 동일한 작업을 클릭하면 동일한 번 더 클릭합니다.을 구성하는 ImageView를 사용해 .android:adjustViewBounds="true"
.
테두리 색 변경
코드에서 테두리 색을 변경하는 가장 쉬운 방법은 tintBackgound 속성을 사용하는 것입니다.
ImageView img = findViewById(R.id.my_image_view);
img.setBackgroundTintList(ColorStateList.valueOf(Color.RED); // changes border color to red
또는
ImageView img = findViewById(R.id.my_image_view);
img.setBackgroundTintList(getColorStateList(R.color.newColor));
다음 항목을 정의하는 것을 잊지 마십시오.newColor
.
res/drawables/background.xml과 같은 배경 그리기 가능 파일을 추가합니다.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white" />
<stroke android:width="1dp" android:color="@android:color/black" />
</shape>
res/layout/foo.xml에서 ImageView 배경을 업데이트합니다.
...
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1dp"
android:background="@drawable/background"
android:src="@drawable/bar" />
...
src가 배경 위에 그려지도록 하려면 ImageView 패딩을 제외합니다.
재료 설계와 새로운 Shapeable ImageView 위젯을 사용하여 테두리가 있는 이미지를 쉽게 만들 수 있습니다.strokeColor
그리고.strokeWidth
특성. 이은 단순하며 추가 가 없습니다이 작업은 간단하며 추가 XML 파일을 만들지 않습니다.
<com.google.android.material.imageview.ShapeableImageView
android:layout_width="200dp"
android:layout_height="200dp"
app:strokeColor="@color/black"
app:strokeWidth="2dp"
app:srcCompat="@drawable/sample_image" />
위의 코드는 폭이 2dp인 검은색 테두리를 만듭니다.
이미지에 에는 둥이미에스추수있경따라우에는할가를 할 수 .shapeAppearanceOverlay
▁this다▁with. 은 제공된 으로 비트맵을 그릴 수 있게 .이렇게 하면 제공된 모양(이 경우 원형)으로 비트맵을 그릴 수 있습니다.자세한 내용은 아래 코드를 확인하십시오.
<com.google.android.material.imageview.ShapeableImageView
android:layout_width="200dp"
android:layout_height="200dp"
app:shapeAppearanceOverlay="@style/circleImageView"
app:srcCompat="@drawable/sample_image"
app:strokeColor="@color/black"
app:strokeWidth="2dp" />
당신의 다음코에추다에 하세요.styles.xml
파일 이름:
<!-- Circle Shape -->
<style name="circleImageView" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
디자인 를 확장하여 할 수 .ShapeableImageView
.
이것은 위에서 사용되었지만 독점적으로 언급되지는 않았습니다.
setCropToPadding(boolean);
참인 경우 이미지가 패딩 내에 맞게 잘립니다.
이것은 다음을 만들 것입니다.ImageView
패딩 내에 맞는 소스가 배경에 추가됩니다.
XML을 통해 아래와 같이 수행할 수 있습니다.
android:cropToPadding="true"
이 코드의 res/drawable에서 background.xml을 생성해야 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<corners android:radius="6dp" />
<stroke
android:width="6dp"
android:color="@android:color/white" />
<padding
android:bottom="6dp"
android:left="6dp"
android:right="6dp"
android:top="6dp" />
</shape>
ImageView의 사용자 정의 테두리 및 모양을 검색하는 사용자를 위한 것입니다.안드로이드 모양 이미지 보기를 사용할 수 있습니다.
그냥추를 추가하세요.compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar'
의 신에게에.build.gradle
.
레이아웃에 사용합니다.
<com.github.siyamed.shapeimageview.BubbleImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/neo"
app:siArrowPosition="right"
app:siSquare="true"/>
이 오랜 문제에 대한 나의 가장 간단한 해결책은 다음과 같습니다.
<FrameLayout
android:layout_width="112dp"
android:layout_height="112dp"
android:layout_marginLeft="16dp" <!-- May vary according to your needs -->
android:layout_marginRight="16dp" <!-- May vary according to your needs -->
android:layout_centerVertical="true">
<!-- following imageView acts as the boarder which sitting in the background of our main container ImageView -->
<ImageView
android:layout_width="112dp"
android:layout_height="112dp"
android:background="#000"/>
<!-- following imageView holds the image as the container to our image -->
<!-- layout_margin defines the width of our boarder, here it's 1dp -->
<ImageView
android:layout_width="110dp"
android:layout_height="110dp"
android:layout_margin="1dp"
android:id="@+id/itemImageThumbnailImgVw"
android:src="@drawable/banana"
android:background="#FFF"/> </FrameLayout>
다음 답변에서 제가 충분히 설명했으니 그것도 한번 봐주세요!
저는 이것이 다른 누군가에게 도움이 되기를 바랍니다!
다음에 사용한 것과 동일한 xml:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffffff" <!-- border color -->
android:padding="3dp"> <!-- border width -->
<ImageView
android:layout_width="160dp"
android:layout_height="120dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="centerCrop" />
</RelativeLayout>
먼저 원하는 배경색을 테두리 색으로 추가한 다음
cropToPadding을 true로 변경한 후 패딩을 추가합니다.
그러면 imageView에 대한 테두리가 표시됩니다.
저는 이것에 대해 거의 포기했습니다.
이미지를 로드하기 위해 글라이드를 사용하는 것이 제 조건입니다. 둥근 모서리 변환에 대한 자세한 글라이드 문제를 참조하십시오.
나는 또한 나의 것에 대해 같은 속성을 가지고 있습니다.ImageView
모두가 여기에 대답하기 위해 여기에 1, 여기에 2, 여기에 3.
android:cropToPadding="true"
android:adjustViewBounds="true"
android:scaleType="fitCenter"`
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/path_to_rounded_drawable"
하지만 여전히 성공하지 못했습니다.
에, 시조사한후, 사니다합을 합니다.foreground
이 SO 답변의 속성은 여기에 결과를 제공합니다.android:foreground="@drawable/all_round_border_white"
불행하게도 그것은 아래 이미지와 같이 "좋지 않은" 테두리 모서리를 제공합니다.
ImageView에 이 코드를 추가하기만 하면 됩니다.
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="@color/white"/>
<size
android:width="20dp"
android:height="20dp"/>
<stroke
android:width="4dp" android:color="@android:color/black"/>
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
Android Studio에서 9개의 패치를 사용하여 테두리를 만들 수 있습니다!
저는 해결책을 찾고 있었지만 찾지 못해서 그 부분을 건너뛰었습니다.
그리고 파이어베이스 자산의 구글 이미지를 찾아보니 9patch를 사용합니다.
링크는 다음과 같습니다. https://developer.android.com/studio/write/draw9patch
가장자리가 있는 곳으로 끌면 됩니다.
그것은 유니티의 경계 가장자리와 같습니다.
저는 이것을 하는 것이 훨씬 쉽다는 것을 알았습니다.
9개의 패치 도구를 사용하여 내부에 내용이 있도록 프레임을 편집합니다.
배를 합니다.ImageView
富士山의 Linearlayout
이나 색상을 으로 설정합니다. 으로 설정합니다.Linearlayout
을 하면, 의 프임이내포내설록도정면하하함용레을부에,▁as▁to▁inside면하설,ImageView
틀 안에 있습니다(9인치 도구로 콘텐츠를 설정한 오른쪽).
셰이프에 다음 코드를 추가합니다.
<gradient
android:angle="135"
android:endColor="#FF444444"
android:centerColor="#FFAAAAAA"
android:startColor="#FFFFFFFF"/>
에트볼라, 광원이 왼쪽 상단으로 설정된 (거의) 들여쓰기된 테두리가 있습니다.비트맵의 크기(이미지 보기의 크기와 관련하여 예에서는 200dp x 200dp 이미지 보기와 196dp x 196dp 비트맵을 사용했으며 모서리의 반경은 14dp입니다)와 패딩을 사용하면 최상의 결과를 얻을 수 있습니다.베벨 효과를 위해 끝과 시작 색상을 전환합니다.
다음은 이미지에 표시되는 모양의 전체 코드입니다(예: border_shape.xml). res/drawable에 저장).
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="135"
android:endColor="#FF444444"
android:centerColor="#FFAAAAAA"
android:startColor="#FFFFFFFF"/>
<padding
android:top="2dp"
android:left="2dp"
android:right="2dp"
android:bottom="2dp"/>
<corners
android:radius="30dp"/>
</shape>
이미지 보기에서 이를 다음과 같이 부릅니다.
android:scaleType="center"
android:background="@drawable/border_shape"
android:cropToPadding="true"
android:adjustViewBounds="true"
다음은 둥근 모서리가 있는 비트맵의 코드입니다.
Bitmap getRoundedRectBitmap(Bitmap bitmap, float radius) {
Paint paint = new Paint();
PorterDuffXfermode pdmode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN);
Bitmap bm = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bm);
Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
RectF rectF = new RectF(rect);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(0xff424242);
canvas.drawRoundRect(rectF, radius, radius, paint);
paint.setXfermode(pdmode);
canvas.drawBitmap(bitmap, rect, rect, paint);
return bm;
}
언급URL : https://stackoverflow.com/questions/3263611/border-for-an-image-view-in-android
'programing' 카테고리의 다른 글
Mariadb Galera 노드는 다시 가입할 특정 노드를 선택하지 않으면 성공적으로 다시 가입할 수 없습니다. (0) | 2023.08.16 |
---|---|
Javascript에서 청크된 HTTP 요청 전송 (0) | 2023.08.16 |
jquery-ui-dialog - 대화 상자 닫기 이벤트에 연결하는 방법 (0) | 2023.08.16 |
프로그래밍 방식으로 EditText의 입력 유형을 PASSWORD에서 NORMAL로 변경하거나 그 반대로 변경 (0) | 2023.08.16 |
merge-commit이 중간에 있는 커밋을 지우는 방법은 무엇입니까? (0) | 2023.08.16 |