0

我有一个实现视图的类

**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

4 回答 4

0

一种方法是使用 LayerDrawable

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

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

<?xml 版本="1.0" 编码="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <项目>
      <形状>
          <solid android:color="#FFFFFFFF" />
      </形状>
    </项目>
    <item android:top="10dp">
      <形状>
          <solid android:color="#FF000000"/>
      </形状>
    </项目>
    <item android:top="60dp">
      <形状>
          <solid android:color="#FFFFFFFF"/>
      </形状>
    </项目>
</layer-list>

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

于 2013-01-30T17:45:21.700 回答
0

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

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

于 2013-01-30T17:25:08.437 回答
0

我需要一个有 2 个参数的函数。这首先表明颜色的开始。第二个表示结束。高度=80dp。示例的第一个参数是 20,例如,第二个参数是 30。此区间内的像素具有颜色......

在此处输入图像描述

于 2013-01-30T18:12:12.767 回答
0

我想最简单的方法是覆盖 onDraw(Canvas 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 中的几乎所有内容)是:

于 2013-01-30T18:32:22.430 回答