我有一个实现视图的类
**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%的颜色? 有谁可以举个例子? 感谢您的时间和帮助。
答案 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。例如,第一个参数是第二个,例如第二个参数。此区间内的像素有颜色...... ..
答案 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中的几乎所有内容)是: