2017-09-26 18 views
0

私はSweepGradientに私のImageViewのを設定したいと思います。設定ImageViewのDrawableの - アンドロイド

は、ここに私が試したものです:

protected void onCreate(@Nullable Bundle savedInstanceState) { 

    ImageView colorPicker = findViewById(R.id.color_picker); 
    colorPicker.setImageDrawable(CreateColorPickerDrawable()); 

} 

private PaintDrawable CreateColorPickerDrawable() 
{ 
    int[] colors = {0xFFFF0000, 0xFF00FF00, 0xFF0000FF}; 
    PaintDrawable paintDrawable = new PaintDrawable(); 

    paintDrawable.setCornerRadius(getResources().getDimension(R.dimen.corner_radius)); 

    SweepGradient sweepGradient = new SweepGradient(50, 50, colors, null); 
    paintDrawable.getPaint().setShader(sweepGradient); 

    return paintDrawable; 
} 

しかし、誰勾配は表示されません。

また、私はこの見てきました:Imageview set color filter to gradient

をしかし、私は(それに加えて、ビットマップsrcを必要とし、私はちょうど丸め/ wの私のImageViewのは長方形になりたいものより簡単な解決策があるように持っていると思っていますコーナー[これはPaintDrawableで簡単に行うことができます])。

誰がどんな指導/助言を持っている場合、それははるかに高く評価されるだろう!タイ!

答えて

0

私はDERPされていました。 ImageViewを通常のViewに切り替えるだけで、背景drawableをpaintDrawableに置き換えることができました。

protected void onCreate(@Nullable Bundle savedInstanceState) { 

View colorPicker = findViewById(R.id.color_picker); 
colorPicker.setBackground(CreateColorPickerDrawable()); 

} 

private PaintDrawable CreateColorPickerDrawable() { 
int[] colors = {0xFFFF0000, 0xFF00FF00, 0xFF0000FF}; 
PaintDrawable paintDrawable = new PaintDrawable(); 

paintDrawable.setCornerRadius(getResources().getDimension(R.dimen.corner_radius)); 

SweepGradient sweepGradient = new SweepGradient(50, 50, colors, null); 
paintDrawable.getPaint().setShader(sweepGradient); 

return paintDrawable; 
} 
0

あなたは、静的な解決策が必要な場合は、描画可能でXMLファイルを使用することができます。

XML(gradient_1.xml)

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#aa0000" 
     android:centerColor="#00aa00" 
     android:endColor="#0000aa" 
     android:angle="270"/> 
    <corners android:radius="0dp" /> 
</shape> 

のJava

ImageView imageView = (ImageView) findViewById(R.id.imageViewGradient); 
imageView.setImageResource(R.drawable.gradient_1); 
+0

最終的にはダイナミックにしたいと思いますが、ハードコードされた色はテストのためのものでした。ごめん :/ –

関連する問題