我如何能够部分设置背景颜色

时间:2013-01-30 17:11:47

标签: android view draw android-canvas background-color

我有一个实现视图的类

**DrawView.class**
     public class DrawView extends View {
    Paint paint = new Paint();

 public DrawView(Context context, AttributeSet attrs){
    super(context, attrs);
 }

和我的 file.xml

      <com.example.sliding.DrawView 
        android:id="@+id/tv_listRow_item1"
    android:tag="tv_listRow_item1_1"
    android:layout_height="0dip"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:width="100dip"
    android:height="30dip"
    android:background="@drawable/textview_listrow_border"/>

此视图有30个高度。 我如何才能在这30次下降中只有30%的颜色? 有谁可以举个例子? 感谢您的时间和帮助。

4 个答案:

答案 0 :(得分:0)

我不完全确定这会起作用,但你可以制作一个30%颜色和70%透明的9贴片,然后以适当的百分比定义两个可拉伸区域(每个一个)。当9个贴片被拉伸时,他们应该尊重多个拉伸区域的比例,所以我认为它会起作用。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

答案 1 :(得分:0)

一种方法是使用LayerDrawable

但这只有在视图的高度固定为80dp时才有效。

在可绘制文件夹中创建一个xml文件。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <shape>
          <solid android:color="#FFFFFFFF" />
      </shape>
    </item>
    <item android:top="10dp">
      <shape >
          <solid android:color="#FF000000"/>
      </shape>
    </item>
    <item android:top="60dp">
      <shape> 
          <solid android:color="#FFFFFFFF"/>
      </shape>
    </item>
</layer-list>

并将其设置为视图的背景。

答案 2 :(得分:0)

我需要一个有2个参数的功能。这首先表明了色彩的开始。第二个显示结束。 HEIGHT = 80dp。例如,第一个参数是第二个,例如第二个参数。此区间内的像素有颜色...... ..

enter image description here

答案 3 :(得分:0)

我想最简单的方法是覆盖onDraw(Canvas画布)函数并绘制一个这样的矩形。

    double mStart = -1;
    double mEnd = -1;

    public void addRectangle( double startInPercent, double endInPercent ) {
        if( startInPercent < 0 || endInPercent > 1 || endInPercent > startInPercent )
            return;

        mStart = startInPercent;
        mEnd = endInPercent;

        //this will make the view to refresh the UI
        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if( mStart >= 0 && mEnd >= 0)
            canvas.drawRect(0, getHeight() * mStart, getWidth(), getHeight() * mEnd, mPaint);
    }

此代码将绘制 addRectangle()方法中指定的矩形。在我的实现中,我打算将该函数的参数设置为视图高度的%。

这是drawRect( ... )电话的文档。根据您的喜好更改您可以在顶部,左下角和右下角绘制的参数。

为了获得你想要的颜色,你必须在视图构造函数中初始化mPaint,如下所示:

    Paint mPaint = new Paint();
    mPaint.setColor( Color.RED );

当然这是最愚蠢的代码,你可以玩这个2概念基本上得到你想要的。

执行此操作的主要类(以及Andorid UI中的几乎所有内容)是: