我的渐变颜色在不同的屏幕尺寸上是不一样的?

时间:2016-09-10 20:34:01

标签: android

我不明白为什么会这样,但我想知道为什么以及如何解决它。我希望我的渐变看起来像所有设备或不同屏幕尺寸的Galaxy S7图片

enter image description here

Gradient的代码:

    textView = (TextView) v.findViewById(R.id.fontcolorwhite);

    LinearGradient linearGradient = new LinearGradient(60,-70,60,70, new int[]{Color.parseColor("#00a8d9"), Color.parseColor("#4244b8"), Color.parseColor("#f1328f"), Color.parseColor("#ee3031"), Color.parseColor("#fde92d"), Color.parseColor("#009e54")},null,
    Shader.TileMode.REPEAT);
    textView.getPaint().setShader(linearGradient);

1 个答案:

答案 0 :(得分:0)

好吧,它现在适用于所有设备和屏幕尺寸。

最终的解决方案是使用dp而不是像素并使用值,直到我得到正确的渐变:

    float px4 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics());
    float px5 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, -17f, getResources().getDisplayMetrics());
    float px6 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics());
    float px7 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 18f, getResources().getDisplayMetrics());


    LinearGradient linearGradient = new LinearGradient(px4, px5, px6, px7, new int[]{Color.parseColor("#00a8d9"), Color.parseColor("#4244b8"), Color.parseColor("#f1328f"), Color.parseColor("#ee3031"), Color.parseColor("#fde92d"), Color.parseColor("#009e54")}, null,
            Shader.TileMode.REPEAT);
    fontcolorpickerbtn.getPaint().setShader(linearGradient);