Как сделать градиентный фон в Андроид
Я хочу создать градиентный фон, как на картинке. но это не может из-за centerColore был распространен, чтобы покрыть снизу и сверху.
Как я могу сделать фон, как на картинке ниже? или как я могу сделать маленький ceterColor, который не распространяется? у тебя есть какие-нибудь идеи?
это фон, который я хочу.
это фон, который я сделал.
Это код в 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>
9 ответов:
вы можете создать эту половину-градиент' смотреть с помощью 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>
наглядные примеры помогают с такого рода вопросом.
шаблон
чтобы создать градиент, вы создаете xml-файл в res / drawable. Я зову своего 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
наlinear
тип. Он должен быть кратным 45 степени.<gradient android:type="linear" android:angle="0" android:startColor="#f6ee19" android:endColor="#115ede" />
type= "radial"
установить
gradientRadius
на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"
следующая ссылка может помочь вам http://angrytools.com/gradient/ .Это создаст пользовательский градиентный фон в android, как и в photoshop.
сначала нужно создать градиент.XML следующим образом
<shape> <gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" /> <stroke android:width="1dp" android:color="#343434" /> </shape>
тогда вам нужно упомянуть выше градиент на фоне layout.As следует
<?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://android--code.blogspot.in/2015/01/android-button-gradient-color.html
Почему бы не создать образ или 9 патч изображения и использовать?
ссылка ниже имеет хорошее руководство о том, как это сделать:
http://android.amberfog.com/?p=247
Если вы настаиваете на использовании формы, попробуйте сайт ниже (выберите Android в левом нижнем углу): http://angrytools.com/gradient/
Я создал аналогичный градиент (не точный) к тому, который у вас есть на этом ссылка на сайт: http://angrytools.com/gradient/?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269
* * используйте этот код в папке drawable**
<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>