Android 如何设置部分背景色
我有一个实现视图的类Android 如何设置部分背景色,android,view,draw,android-canvas,background-color,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); } 和myfile.xml <com.example.sliding.DrawView
**DrawView.class**
public class DrawView extends View {
Paint paint = new Paint();
public DrawView(Context context, AttributeSet attrs){
super(context, attrs);
}
和myfile.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%进行着色?
谁能给我举个例子?
感谢您的时间和帮助。我不完全确定这是否可行,但您可以制作一个颜色为30%、透明度为70%的9面片,然后以适当的百分比定义两个可拉伸区域(每个区域一个)。当9个补丁被拉伸时,它们应该尊重多个拉伸区域的比率,所以我认为这是可行的
一种方法是使用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个参数的函数。这首先表示颜色的开始。第二个表示结束。高度=80dp。例如,第一个参数是20,第二个参数是30。此间隔内的像素具有颜色 <?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>
我想最简单的方法是重写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);
}
当然,这是可能的最愚蠢的代码,您可以围绕这2个概念玩,基本上得到您想要的
完成此操作的主要类(以及Andorid UI中的几乎所有内容)是: