안드로이드에서 그라데이션 배경을 만드는 방법
아래 이미지와 같이 그라데이션이 위쪽 절반에 있고 아래쪽 절반에 단색이 있는 그라데이션 배경을 만들고 싶습니다.
그럴 수가 없어요.centerColor
아래와 위를 덮도록 펴집니다.
어떻게 하면 첫 번째 이미지와 같은 배경을 만들 수 있습니까?어떻게 작게 만들 수 있습니까?centerColor
그게 퍼져있지 않나요?
위의 배경 버튼의 XML 코드입니다.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:startColor="#6586F0"
android:centerColor="#D6D6D6"
android:endColor="#4B6CD6"
android:angle="90"/>
<corners
android:radius="0dp"/>
</shape>
시각적인 예는 이러한 질문에 도움이 됩니다.
보일러 플레이트
그라데이션을 생성하려면 res/drawable 형식의 xml 파일을 생성합니다.내 것을 my_gradient_drawable.xml이라고 부릅니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:type="linear"
android:angle="0"
android:startColor="#f6ee19"
android:endColor="#115ede" />
</shape>
일부 보기의 배경으로 설정합니다.예:
<View
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@drawable/my_gradient_drawable"/>
type="선형"
을 합니다.angle
당분간linear
45도의 배수여야 합니다.
<gradient
android:type="linear"
android:angle="0"
android:startColor="#f6ee19"
android:endColor="#115ede" />
type="dll"
을 합니다.gradientRadius
당분간radial
형유. 용사를 %p
모체의 가장 작은 차원에 대한 백분율을 의미합니다.
<gradient
android:type="radial"
android:gradientRadius="10%p"
android:startColor="#f6ee19"
android:endColor="#115ede" />
type="dll"
왜 스윕을 사용하는지 모르겠지만 완전성을 위해 포함합니다.각도 변경 방법을 알 수 없어서 이미지를 하나만 포함하고 있습니다.
<gradient
android:type="sweep"
android:startColor="#f6ee19"
android:endColor="#115ede" />
중심
스위프 또는 방사형 유형의 중심을 변경할 수도 있습니다.값은 너비와 높이의 분수입니다.사용할 수도 있습니다.%p
android:centerX="0.2"
android:centerY="0.7"
사용해 보십시오.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:angle="90"
android:centerColor="#555994"
android:endColor="#b5b6d2"
android:startColor="#555994"
android:type="linear" />
<corners
android:radius="0dp"/>
</shape>
xml Layer-List를 사용하여 위쪽과 아래쪽 '밴드'를 하나의 파일로 결합하여 이 '반 그라데이션' 모양을 만들 수 있습니다.각 밴드는 xml 모양입니다.
자세한 튜토리얼은 SO의 다음 이전 답변을 참조하십시오.다중 그라데이션 모양입니다.
다음 링크를 클릭하면 http://angrytools.com/gradient/ 에 도움이 될 수 있습니다.이것은 포토샵에서처럼 안드로이드에서 사용자 지정 그라데이션 배경을 만들 것입니다.
먼저 다음과 같이 gradient.xml을 생성해야 합니다.
<shape>
<gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" />
<stroke android:width="1dp" android:color="#343434" />
</shape>
그러면 레이아웃 배경에서 위의 그라데이션을 언급해야 합니다.다음과 같이
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gradient"
>
</LinearLayout>
또는 PSD에서 생각나는 대로 코드에 사용할 수 있습니다.
private void FillCustomGradient(View v) {
final View view = v;
Drawable[] layers = new Drawable[1];
ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() {
@Override
public Shader resize(int width, int height) {
LinearGradient lg = new LinearGradient(
0,
0,
0,
view.getHeight(),
new int[] {
getResources().getColor(R.color.color1), // please input your color from resource for color-4
getResources().getColor(R.color.color2),
getResources().getColor(R.color.color3),
getResources().getColor(R.color.color4)},
new float[] { 0, 0.49f, 0.50f, 1 },
Shader.TileMode.CLAMP);
return lg;
}
};
PaintDrawable p = new PaintDrawable();
p.setShape(new RectShape());
p.setShaderFactory(sf);
p.setCornerRadii(new float[] { 5, 5, 5, 5, 0, 0, 0, 0 });
layers[0] = (Drawable) p;
LayerDrawable composite = new LayerDrawable(layers);
view.setBackgroundDrawable(composite);
}
//Color.parseColor() method allow us to convert
// a hexadecimal color string to an integer value (int color)
int[] colors = {Color.parseColor("#008000"),Color.parseColor("#ADFF2F")};
//create a new gradient color
GradientDrawable gd = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
gd.setCornerRadius(0f);
//apply the button background to newly created drawable gradient
btn.setBackground(gd);
여기서 참조 https://https-code.blogspot.in/2015/01/android-button-gradient-color.html
그리기 가능한 폴더에서 이 코드를 사용합니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#3f5063" />
<corners
android:bottomLeftRadius="30dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="30dp"
android:topRightRadius="0dp" />
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp" />
<gradient
android:angle="45"
android:centerColor="#015664"
android:endColor="#636969"
android:startColor="#2ea4e7" />
<stroke
android:width="1dp"
android:color="#000000" />
</shape>
이미지 또는 9 패치 이미지를 생성하여 사용하는 것이 어떻습니까?
아래 링크에는 이 작업을 수행하는 방법에 대한 유용한 가이드가 나와 있습니다.
http://android.amberfog.com/ ?p=247
Shape를 사용해야 한다면 아래 사이트를 사용해 보십시오(왼쪽 아래의 Android 선택).
다음 링크에 있는 것과 유사한 그라데이션(정확하지 않음)을 만들었습니다. http://angrytools.com/gradient/ ?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269
심플 웨이
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:startColor="@color/choclate_light1"
android:centerColor="@color/choclate_light"
android:endColor="@color/choclate"
android:angle="90"/>
<!--If you need then use Corners-->
<!--<corners
android:radius="@dimen/_20sdp"/>-->
</shape>
언급URL : https://stackoverflow.com/questions/13929877/how-to-make-gradient-background-in-android
'programing' 카테고리의 다른 글
활성 도커 컨테이너의 포트 노출 (0) | 2023.07.29 |
---|---|
"is" 연산자 이해 (0) | 2023.07.29 |
어레이, 해시 테이블 및 사전을 생성하시겠습니까? (0) | 2023.07.29 |
Oracle: 자정 전 현재 날짜(오늘)를 선택하는 방법은 무엇입니까? (0) | 2023.07.29 |
도커 - 컨텍스트를 준비할 수 없음: 도커 파일 경로의 심볼 링크를 평가할 수 없음: GetFileAttributes전 (0) | 2023.07.29 |