如何创建对角分割且两半可点击的布局?
Posted
技术标签:
【中文标题】如何创建对角分割且两半可点击的布局?【英文标题】:How to create a layout that's split diagonally and the two halves are clickable? 【发布时间】:2014-09-19 10:45:36 【问题描述】:我需要创建一个布局,将屏幕沿对角线分成两部分,背景颜色不同。像这样:
我怎样才能做到这一点?
【问题讨论】:
looksok.wordpress.com/2013/08/24/… 您是想像这样绘制还是实际创建具有左右子视图的新 GroupView,并能够在其中添加子视图? @sromku 我想创建一个包含左右子视图的组视图,并能够在其中添加子视图。 在您自己的自定义视图组中扩展 LinearLayout。 jayway.com/2012/06/25/… 【参考方案1】:这可以按如下方式完成:
创建一个FrameLayout
(假设为 50x50 像素)。
创建两个ImageView
s(在FrameLayout
内并将它们设置为match_parent
)并作为源给它们两个三角形。
为FrameLayout
创建一个onTouchListener
。
现在是棘手的部分:
public boolean onTouch(View v, MotionEvent me)
float time = System.getCurrentTimeInMilles();
if(me.action == MotionEvent.DOWN)
lastTimePress = time; /// global var
if(me.action == MotionEvent.UP && lastTimePress - time < 200)
if(calcPlace(me.getX()) < me.getY())
/// go to onClick for the right triangle
else
/// go to onClick for the left triangle
public int calcPlace(int x)
return 50 -x;
您不必为两个三角形 (ImageView
s) 设置 onClickListener
,只需一个处理点击的方法即可。
有些字段可能是错误的,对此深表歉意:) 希望你明白这一点。
【讨论】:
【参考方案2】:应该可以创建一个视图作为背景,然后在其上方以 45 度角放置另一个视图。将两者都放在 FrameLayout 中以再次将其剪辑为矩形。您可以为它们中的每一个分配一个 onClick 处理程序。
【讨论】:
【参考方案3】:可以通过xml设置背景。将同一背景的abc
图片做成不同尺寸:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/abc"
android:orientation="vertical" >
</LinearLayout>
【讨论】:
以上是关于如何创建对角分割且两半可点击的布局?的主要内容,如果未能解决你的问题,请参考以下文章