如何创建对角分割且两半可点击的布局?

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 像素)。 创建两个ImageViews(在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; 

您不必为两个三角形 (ImageViews) 设置 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>

【讨论】:

以上是关于如何创建对角分割且两半可点击的布局?的主要内容,如果未能解决你的问题,请参考以下文章

怎样找到一张纸的黄金分割点

R - ggplot上的背景颜色沿对角线分割?

摄影八大构图法

摄影八大构图法

hihoCoder 第253周 hiho一下 矩形分割

归并排序