Android SeekBar无法顺利移动

时间:2016-05-22 14:11:56

标签: android android-layout android-linearlayout imagebutton seekbar

我试图在android中编写一个Camera应用。我想使用SeekBar放大/缩小相机。这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        >
        <FrameLayout
            android:id="@+id/camera_preview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            />

        <SeekBar android:id="@+id/sliderZoom"
            android:layout_width="160dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            />
    </LinearLayout>


    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="50dp"
        android:layout_height="fill_parent"
        android:background="#000000">

        <ImageButton
            android:layout_height="50dp"
            android:layout_width="wrap_content"
            android:src="@drawable/flash"
            android:scaleType="fitXY"
            android:layout_alignParentTop="true"
            android:onClick="onFlashClick" />
        <ImageButton
            android:layout_height="50dp"
            android:layout_width="wrap_content"
            android:src="@drawable/zoom"
            android:scaleType="fitXY"
            android:layout_centerInParent="true"
            android:onClick="onZoomClick" />
    </RelativeLayout>
</LinearLayout>

如果我移除ImageButton中的任何一个,我的SeekBar移动顺利。但如果我同时使用ImageButton,那么它并没有顺利进行。我尝试在portraitlandscape模式下运行该应用。两种模式下的问题都是一样的。

我该如何解决?

编辑:根据一些评论,我想添加更多信息。目前,SeekBar没有事件处理程序。它不会放大或缩小相机。这只是一个简单的SeekBar&#39;将最大值设置为某个随机整数。对于我的情况,我尝试了5到500.在每种情况下我都有问题。通过平滑移动我的意思是当我尝试用触摸滑动时它应该轻松移动,不应该停止。如果有一个ImageButton,我可以向左/右滑动SeekBar指针,没有任何问题。但如果有两个ImageButton,则指针不会轻易移动。看起来每次指针移动一个单元时,UI线程上会运行一些耗时的操作,从而阻止UI捕获触摸事件。虽然事实是在UI线程中没有耗时的操作。没有为任何类型的计算编写单个函数。我甚至没有在FrameLayout添加相机预览或相机未初始化

更多编辑:我刚刚发现了一个有趣的事件。如果两个ImageButton的图像源都是相同的图像(并不重要),那么它的效果非常好。但如果我为两个ImageButton提供了两个不同的图像,那么它就会引发问题。我希望这些新信息有助于了解正在发生的事情。图像的分辨率为1299x1299,尺寸小于40kb。

1 个答案:

答案 0 :(得分:0)

实际上这不是问题。相机缩放级别并非如此。基本上缩放级别是5-7。因此,由于您使用SeekBar作为缩放控制器,这意味着您的搜索栏的最大级别为7(支持)。因此,当您拉动条形时,它会逐级缓冲。 对于您的测试,您可以设置值 seekBar.setMax(30),然后拉出搜索栏。我希望你能顺利完成