我有我想要展示的所有元素(文本以及圖像視圖),現在我需要做的就是顯示一條連接我的某些視圖的線(我正在嘗試生成一個連接圖的外觀)。是否有其他的方式來做到這一點,而不使用畫布?另一個疑問是,如果我使用畫布進行自定義視圖,可以在同一活動中使用其他圖像/文本視圖以及畫布。用一條線加入兩個視圖
我是新到Android,這就是爲什麼困惑,請給我一些方向移動。
我有我想要展示的所有元素(文本以及圖像視圖),現在我需要做的就是顯示一條連接我的某些視圖的線(我正在嘗試生成一個連接圖的外觀)。是否有其他的方式來做到這一點,而不使用畫布?另一個疑問是,如果我使用畫布進行自定義視圖,可以在同一活動中使用其他圖像/文本視圖以及畫布。用一條線加入兩個視圖
我是新到Android,這就是爲什麼困惑,請給我一些方向移動。
您可以使用創建一個空白視圖。將寬度和其他屬性添加到它以使其顯示爲一條線。
<View android:layout_width="1dp"
android:layout_height="wrap_content"/>
使用此:
<LinearLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/layout2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</LinearLayout>
查看標記分隔兩個佈局之類的小線
我做同樣的與CustomView
。看一看:
CustomView類源代碼:
public class CustomView extends View
{
Paint paint = new Paint();
float startingX, startingY, endingX, endingY;
ArrayList<Lines> line_list = new ArrayList<Lines>(); ;
boolean flag = false;
boolean flag1 = false;
public class Lines
{
float startingX, startingY, endingX, endingY;
}
Context context;
public CustomView(Context context, AttributeSet attrs)
{
super(context, attrs);
this.context=context;
}
public CustomView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
public void setNumberOfLine(int x)
{
line_list = new ArrayList<Lines>();
int y = getHeight();
int z = getWidth();
System.out.println("length => "+x);
System.out.println("height => "+y);
System.out.println("width => "+z);
for (int i = 0; i < x; i++)
{
Lines l = new Lines();
l.startingX = z/2;
l.startingY = 0;
l.endingX = i*(z/x)+(z/(x*2));
l.endingY = y;
System.out.println("l.endingX => " + l.endingX);
System.out.println("l.endingY => " + l.endingY);
line_list.add(l);
}
flag = true;
flag1 = false;
invalidate();
}
@SuppressWarnings("deprecation")
public void setNumberOfLine1(int x , int position , int total , float getX)
{
line_list = new ArrayList<Lines>();
int y = getHeight();
// Display display = ((Activity) context).getWindowManager().getDefaultDisplay();
// int z = display.getWidth();
int z;
float start=0;
//
if(x<5)
{
Display display = ((Activity) context).getWindowManager().getDefaultDisplay();
z = display.getWidth();
start = position*(z/total)+(z/(total*2));
}
else
{
z = getWidth();
start = getX;
}
System.out.println("length => "+x);
System.out.println("height => "+y);
System.out.println("width => "+z);
for (int i = 0; i < x; i++)
{
Lines l = new Lines();
if(x==1)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 2*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(x==2)
{
if(i==0)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 1*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(i==1)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 3*(z/total)+(z/(total*2));
l.endingY = y;
}
}
else if(x==3)
{
if(i==0)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 2*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(i==2)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 3*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(i==3)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 4*(z/total)+(z/(total*2));
l.endingY = y;
}
}
else if(x==4)
{
if(i==0)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 1*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(i==2)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 2*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(i==3)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 3*(z/total)+(z/(total*2));
l.endingY = y;
}
else if(i==3)
{
l.startingX = start;
l.startingY = 0;
l.endingX = 5*(z/total)+(z/(total*2));
l.endingY = y;
}
}
else
{
// l.startingX = start;
// l.startingY = 0;
// l.endingX = i*(z/total)+(z/(total*2));
// l.endingY = y;
l.startingX = start;
l.startingY = 0;
l.endingX = i*(z/x)+(z/(x*2));
l.endingY = y;
}
line_list.add(l);
System.out.println("l.endingX 1=> " + l.endingX);
System.out.println("l.endingY 1=> " + l.endingY);
}
flag1 = true;
flag = false;
invalidate();
}
public CustomView(Context context)
{
super(context);
// TODO Auto-generated constructor stub
paint.setColor(getResources().getColor(R.color.purple_dark));
paint.setStrokeWidth(Utility.dpToPx(5, context));
}
}
那是什麼'CustomView'?你應該提供更多的細節來支持你的答案。 –
這正是我正在尋找的,你可以指導我的教程或文章,幫助 – sainiankit
@SainiAnkit我用'CustomView'源代碼更新了我的答案。 –