Android调整大小查看不顺畅

时间:2016-09-14 16:22:47

标签: android resize

我有自定义ImageViewButton,点击Button然后向上和向下移动调整ImageView的大小,但它无法顺利运行。

我创建了一个单独的线程来平滑用户移动,但显然它无法进行任何GUI更改..我试图找到一种方法来使用Animation,但我没有看到一种方式不断更新目标高度。

工作代码
按钮onTouchListener:

 
// resize button start location
private PointF startResize = new PointF();

    ImageView resize = (ImageView) findViewById( R.id.resize );
    resize.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN:

                    // save first touch location
                    startResize.set( boardImage.getHeight(), event.getY() );
                    break;
                case MotionEvent.ACTION_MOVE:

                    // calculate horizontal move distance
                    int movedDistance = Math.round(event.getY() - startResize.y);

                    if ( Math.abs( movedDistance ) > 4 ) {

                        // set new height
                        boardImage.setHeight( movedDistance + (int)startResize.x );
                    }

                    break;
            }
            return true; // indicate event was handled
        }
    });

自定义ImageView
自动调用setHeight:

 
// set height and revalidate
public void setHeight( int newHeight ){

    height = newHeight;

    // rescale image
    setImageMatrix( checkMatrix() );

    requestLayout();
}

onMeasure:

 
@Override
public void onMeasure( int widthMeasureSpec, int heightMeasureSpec ) {

    setMeasuredDimension( width, height );
}

编辑 更好的解释

触摸红色环绕的Button并向上/向下拖动可将其上方的ImageView调整为任意大小。见下图。

我尝试使用Animation,但我必须取消它并设置一个新的每一个微小的小动作导致每秒创建20/30个新动画..

zoomed layout http://roelept82.eightytwo.axc.nl/pic/link1.png

layout http://roelept82.eightytwo.axc.nl/pic/link2.png

1 个答案:

答案 0 :(得分:2)

没有足够的声誉来评论,所以我会在这里发布。 我不确定我是否理解你的全部问题。你看过this?

了吗?

它可能不完全是您正在寻找的,但他们使用动画“缩放”的方式可能正是您所需要的。希望能帮助到你。

编辑:

在阅读更新后的问题后,我意识到我之前的答案并不是您想要的。但环顾四周,我找到了一个github-repo做你想做的事,here

我没有创造它,也不拥有它。但我确实对它进行了测试,而且我认为它几乎完全符合你的要求。