簡體   English   中英

如何部分設置背景色

[英]How I can set partly the 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%? 有人可以給我一個例子嗎? 感謝您的時間和幫助。

我不完全確定這是否可行,但是您可以制作一個9塊色塊,該塊色塊的顏色為30%,透明度為70%,然后以適當的百分比定義兩個可拉伸區域(每個區域一個)。 當拉伸9個斑塊時,它們應該尊重多個拉伸區域的比率,因此我認為這是可行的。

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

一種方法是使用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個參數的功能。 這首先表示顏色的開始。 第二個指示結束。 hEIGHT = 80dp。 例如,第一個參數是20,第二個是30。 此間隔內的像素具有顏色…..

在此處輸入圖片說明

我想最簡單的方法是重寫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中的幾乎所有內容)是:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM