【问题标题】:Layout background with SweepGradient带有 SweepGradient 的布局背景
【发布时间】:2017-11-29 08:25:40
【问题描述】:

我需要像图片中那样创建一个多色背景。我知道所有的颜色和角度。

我尝试使用 SweepGradient 执行此操作,但没有任何变化,我只看到白色背景。

我的一个布局

<RelativeLayout
    android:id="@+id/user_info_background"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

片段中的代码:

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mRelativeLayout.setBackground(GraphicalUtils.addSweepGradientBackground(getResources().getDisplayMetrics().widthPixels, 
    getResources().getDisplayMetrics().heightPixels,getContext()));}

添加SweepGradient的方法:

 public static Drawable addSweepGradientBackground(int width, int height, Context context){
        Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas();

        SweepGradient sweepGradient = new SweepGradient(width/2,height/2,Color.RED, Color.BLUE);

        Paint paint = new Paint();
        paint.setShader(sweepGradient);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        canvas.drawBitmap(bitmap,0,0,paint);

        return new BitmapDrawable(context.getResources(), bitmap);

    }

【问题讨论】:

    标签: android android-layout android-background sweepgradient


    【解决方案1】:

    试试这个:

    public static Drawable addSweepGradientBackground(int width, int height, Context context){
        Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
    
        SweepGradient sweepGradient = new SweepGradient(width/2,height/2,Color.RED, Color.BLUE);
    
        Paint paint = new Paint();
        paint.setShader(sweepGradient);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        canvas.drawBitmap(bitmap,0,0,null);
        canvas.drawCircle(width/2,height/2, width/2, paint)
    
        return new BitmapDrawable(context.getResources(), bitmap);
    
    } 
    

    画布应该和位图绑定,你需要用位图上有sweepGradient的油漆画圆圈。

    【讨论】:

    • 乔,谢谢它有效。你觉得我可以用 SweepGradient 画出这样的背景吗?
    • 当然,用SweepGradient(float cx, float cy, int[] colors, float[] positions)这个方法来控制颜色的变化。
    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2014-07-06
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多