1

我创建了一个可重用的自定义组件(一个带有画布绘制位图的自定义视图),它是一个可用于任何东西(音量控制/评级系统)的滑块。问题是我需要监控它的进度,比如seekbar onProgressChanged。

我不知道我会实施这个。我无法使用搜索栏并尝试重新使用它,我需要使用自定义组件..

有人对此有任何想法吗?

我的布局如下:

在此处输入图像描述 所以我需要监控我的滑动图像的移动并尝试从中计算某种进展,或者有没有更简单的方法?

对此的任何输入将不胜感激,这是我在自定义组件方面的第一次努力

编辑

这是我的 xml 布局的外观:

   <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id = "@+id/slider1"
        android:layout_alignParentTop="true">

        <com.cs.customSlider.slider.app.sliderView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/sliderView"
            sliderView:diagonalSlide="false"
            sliderView:translateAxisX="false"/>
        <ImageView
            android:id="@+id/slider_frame"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/slider_frame"
            android:layout_centerHorizontal="true">
        </ImageView>

</RelativeLayout>
4

1 回答 1

2

免责声明:这可能不会像我预期的那样 100% 有效,但这应该可以帮助您入门。

您的 customView 显然扩展了 View。所以使用 getLeft() 来获取视图的位置。使用 getParent() 获取包含此视图的 ViewGroup,它可能是线性或相对布局并获取它的宽度。

现在您对自己的视图在父视图中的位置有了一个粗略的了解,越靠右,越“进步”。从 parentView 的宽度中减去 customView 的宽度,因为我们是从左侧测量的,显然 customView 的左侧永远不会碰到父视图的右侧。

希望能帮助你到达那里......

    View view = ...;

    //position of my view;
    int pos = view.getLeft();

    //Number of pixels my view can slide across the screen.
    ViewGroup vg = (ViewGroup) view.getParent();
    int width = vg.getMeasuredWidth();

    //right most position my view can reach,
    int available_width = width - view.getMeasuredWidth();

    float progress = ((float) pos) / available_width;
于 2014-03-18T13:20:35.873 回答