안드로이드에서 그라디언트 배경을 만드는 법
아래 이미지와 같이 그라디언트가 위쪽 절반에 있고 아래쪽 절반에 단색이있는 그라디언트 배경을 만들고 싶습니다.
나는 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>
xml Layer-List 를 사용하여 상단과 하단의 '밴드'를 하나의 파일로 결합 하여이 '하프 그라데이션'모양을 만들 수 있습니다 . 각 밴드는 xml 모양입니다.
자세한 자습서는 다중 그라디언트 모양에 대한 SO의 이전 답변을 참조하십시오 .
이것을 사용해보십시오 :
<?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>
시각적 예는 이런 종류의 질문에 도움이됩니다.
보일러 플레이트
그라디언트를 만들려면 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 = "linear"
를 설정 angle
A의 linear
유형입니다. 45 도의 배수 여야합니다.
<gradient
android:type="linear"
android:angle="0"
android:startColor="#f6ee19"
android:endColor="#115ede" />
type = "방사형"
를 설정 gradientRadius
A의 radial
유형입니다. 사용 %p
은 부모의 가장 작은 차원의 백분율을 의미합니다.
<gradient
android:type="radial"
android:gradientRadius="10%p"
android:startColor="#f6ee19"
android:endColor="#115ede" />
type = "sweep"
나는 왜 누군가가 스윕을 사용할지 모르겠지만, 완전성을 위해 그것을 포함하고 있습니다. 각도를 변경하는 방법을 알 수 없으므로 하나의 이미지 만 포함합니다.
<gradient
android:type="sweep"
android:startColor="#f6ee19"
android:endColor="#115ede" />
센터
스윕 중심 또는 방사형 유형을 변경할 수도 있습니다. 값은 너비와 높이의 분수입니다. %p
표기법 을 사용할 수도 있습니다 .
android:centerX="0.2"
android:centerY="0.7"
Following link may help you http://angrytools.com/gradient/ .This will create custom gradient background in android as like in photoshop.
First you need to create a gradient.xml as follows
<shape>
<gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" />
<stroke android:width="1dp" android:color="#343434" />
</shape>
Then you need to mention above gradient in the background of layout.As follows
<?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>
Or you can use in code whatever you might think of in 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);
Refer from here https://android--code.blogspot.in/2015/01/android-button-gradient-color.html
Why not create an image or a 9 Patch image and use that?
The link below has a nice guide on how to do it:
http://android.amberfog.com/?p=247
If you insist on using a Shape, try the site below (Select Android at bottom left): http://angrytools.com/gradient/
이 링크에있는 것과 비슷한 그라디언트 (정확하지는 않음)를 만들었습니다 : 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">
<solid android:color="#3f5063"
/>
<corners android:bottomRightRadius="0dp" android:bottomLeftRadius="30dp" android:topLeftRadius="30dp" android:topRightRadius="0dp" />
<padding android:left="2dp" android:top="2dp" android:right="2dp" android:bottom="2dp" />
<gradient
android:startColor="#2ea4e7"
android:centerColor="#015664"
android:endColor="#636969"
android:angle="45"
>
</gradient>
<stroke android:color="#000000"
android:width="1dp">
</stroke>
참고 URL : https://stackoverflow.com/questions/13929877/how-to-make-gradient-background-in-android
'IT story' 카테고리의 다른 글
iPhone / iOS에서 전화 번호의 파란색 스타일을 어떻게 제거합니까? (0) | 2020.05.12 |
---|---|
Conda를 통해 Python OpenCV를 어떻게 설치합니까? (0) | 2020.05.12 |
문자열에서 모든 특수 문자를 제거합니다. (0) | 2020.05.12 |
배열의 첫 번째 요소를 얻는 방법? (0) | 2020.05.12 |
C ++ 표준은 iostream의 성능 저하를 요구합니까, 아니면 구현이 좋지 않은 경우에만 처리합니까? (0) | 2020.05.12 |