programing

안드로이드에서 그라데이션 배경을 만드는 방법

telecom 2023. 7. 29. 08:11
반응형

안드로이드에서 그라데이션 배경을 만드는 방법

아래 이미지와 같이 그라데이션이 위쪽 절반에 있고 아래쪽 절반에 단색이 있는 그라데이션 배경을 만들고 싶습니다.

그럴 수가 없어요.centerColor아래와 위를 덮도록 펴집니다.

In the gradient for the button, a white horizontal line fades over blue toward the top and botton.

어떻게 하면 첫 번째 이미지와 같은 배경을 만들 수 있습니까?어떻게 작게 만들 수 있습니까?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당분간linear45도의 배수여야 합니다.

<gradient
    android:type="linear"
    android:angle="0"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

enter image description here

type="dll"

을 합니다.gradientRadius당분간radial 형유. 용사를 %p모체의 가장 작은 차원에 대한 백분율을 의미합니다.

<gradient
    android:type="radial"
    android:gradientRadius="10%p"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

enter image description here

type="dll"

왜 스윕을 사용하는지 모르겠지만 완전성을 위해 포함합니다.각도 변경 방법을 알 수 없어서 이미지를 하나만 포함하고 있습니다.

<gradient
    android:type="sweep"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

enter image description here

중심

스위프 또는 방사형 유형의 중심을 변경할 수도 있습니다.값은 너비와 높이의 분수입니다.사용할 수도 있습니다.%p

android:centerX="0.2"
android:centerY="0.7"

enter image description here

사용해 보십시오.

<?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

반응형