테두리가 있는 투명 원
Android에서 XML을 사용하여 테두리만 있는 원을 만들려고 합니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke android:width="1dp"
android:color="#000000"/>
</shape>
제가 사용한 코드는 위에 게시되어 있습니다.하지만, 저는 반지가 아니라 디스크가 생깁니다.캔버스가 아닌 XML로만 출력을 받고 싶습니다.내가 뭘 잘못하고 있는 거지?
감사해요.
편집: 아래 답변 덕분에 작동했습니다.여기 내 마지막 코드가 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="1.9"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<size android:width="100dp"
android:height="100dp"/>
<stroke android:width="1dp"
android:color="#FFFFFF"/>
</shape>
이런 거 먹어봐요.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<stroke
android:width="2dp"
android:color="@android:color/darker_gray" />
</shape>
업데이트: madeandroid:thicknessRatio="2"전체 원을 그리다 (넥서스 5 - 롤리팝 사용)
이것을 사용하면 될 것입니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient
android:centerX=".6"
android:centerY=".40"
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent"
android:type="radial" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
속이 빈
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="1dp"
android:color="@color/indicator_unselected" />
</shape>
만차
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="100dp" />
<solid android:color="@android:color/white" />
</shape>
스트로크 효과는 필요한 색상의 스트로크(예: #000)로 투명한 타원형을 그릴 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#000" />
<size
android:width="40dp"
android:height="40dp" />
</shape>
Vector drawables를 사용할 수 있다면 이것을 시도해보세요.
<vector android:height="24dp" android:viewportHeight="512.0"
android:viewportWidth="512.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFF" android:fillType="evenOdd"
android:pathData="M0,0L512,0L512,512L0,512L0,0ZM256,511C396.8,511 511,396.8 511,256C511,115.2 396.8,1 256,1C115.2,1 1,115.2 1,256C1,396.8 115.2,511 256,511Z"
android:strokeColor="#00000000" android:strokeWidth="1"/>
</vector>
Android 내장 가치를 사용하여 다음과 같이 투명하게 작업할 수 있습니다.@android:color/transparent아니면 사용#0000아니면#00000000
위에서 4자리로 시작하는 것은 알파에 대한 것이고 8자리 값에서 첫 두 자리는 알파에 대한 것입니다.
기본 알파 값보다 3자리 또는 6자리만 색상으로 지정할 경우 해당 색상 값의 알파를 4자리 또는 8자리 값으로 설정하여 전달합니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" >
<gradient
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#d9d9d9" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
<item
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp">
<shape android:shape="oval" >
<gradient
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#b3b3b3" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" >
<stroke
android:width="4dp"
android:color="@color/colorPrimaryDark" />
<corners android:radius="0dp" />
</shape>
</item>
<item
android:top="1dp"
android:bottom="1dp"
android:left="1dp"
android:right="1dp">
<shape android:shape="oval">
<solid android:color="@color/colorRed" />
<size android:height="@dimen/_100sdp"
android:width="@dimen/_100sdp"></size>
</shape>
</item>
</layer-list>
색상을 다음으로 설정할 경우#00000000, 결과는 투명할 것입니다.미래의 발전을 위해 바꾸고 싶다면 이런 식으로 하고 싶을 것입니다.예를 들어, 빨간색과 부분적으로 투명하기를 원한다면, 다음과 같습니다.#ff000088마지막 두 숫자는 불투명도입니다.저는 미래의 변화를 좀 더 쉽게 만들기 위해 이렇게 합니다.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="2"
android:shape="ring"
android:thicknessRatio="1"
android:useLevel="false">
<gradient
android:type="radial"
android:gradientRadius="8dp"
android:endColor="@color/colorDarkPurple"
android:elevation="5dp"
/>
<stroke
android:width="2dp"
android:color="@color/colorLilac"/>
</shape>
이 그리기 기능을 사용하여 영상 보기의 배경 설정을 시도할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" >
<stroke
android:width="4dp"
android:color="@android:color/black" />
<corners android:radius="0dp" />
</shape>
</item>
<item
android:top="8dp"
android:bottom="8dp"
android:left="8dp"
android:right="8dp">
<shape android:shape="oval">
<solid android:color="@android:color/black" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
</layer-list>
언급URL : https://stackoverflow.com/questions/16098538/transparent-circle-with-border
'programing' 카테고리의 다른 글
| Jquery $jquery.data()가 있는 모든 요소를 선택합니다. (0) | 2023.10.05 |
|---|---|
| AngularJS: ng-repeat을 사용하는 명령어의 요소에 링크 (0) | 2023.10.05 |
| 저장 프로시저가 없는 경우 생성 (0) | 2023.10.05 |
| 대소문자명세서 vs 대소문자명세서 (0) | 2023.09.25 |
| node-mysql을 사용하여 MySQL 연결을 닫을 때는 언제입니까? (0) | 2023.09.25 |