【问题标题】:My Gradient colors is not the same on different screen sizes?我的渐变颜色在不同的屏幕尺寸上不一样?
【发布时间】:2016-09-10 20:34:01
【问题描述】:

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

渐变的代码:

    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);

【问题讨论】:

  • 好吧,您使用的是绝对像素值。为什么不使用dp
  • 参数中的值是否以像素为单位? @Shaishav
  • TextView#getTextSize()
  • @pskink 你是什么意思?
  • 长话短说:为您的渐变设置dp 值,然后使用this linkpx 中获取dp,最后将其设置在上面的渐变中。

标签: android


【解决方案1】:

好吧,它现在可以在所有设备和屏幕尺寸上完美运行。

最终的解决方案是使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2016-06-10
    • 2012-05-23
    • 2015-02-28
    • 2015-11-18
    相关资源
    最近更新 更多