[英]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.