android捏缩放比例视图滚动条移动

时间:2013-01-12 09:19:37

标签: android view scrollbar scale

我有线性布局的视图。该应用程序是音乐符号,它是一系列音乐条,它们换行,所以它们总是小于屏幕的宽度(没有水平滚动)。当乐谱对于视图来说太大时,会有一个垂直滚动条。到现在为止还挺好。我可以向上和向下滚动。

现在我正在实现缩放缩放,我在ScaleGestureDetector中设置了onScale,保存了缩放因子,无效,在onDraw中我使用像canvas.scale这样的缩放因子(mScaleFactor,mScaleFactor);

它缩放视图确定除了它没有完全按我想要的那样做。我希望画布的绘图区域可以缩放,但滚动条保持原位,但缩放会将其发送到侧面,不在视野范围内。

任何想法如何缩放视图而不是滚动条?

顺便说一句,我可以通过将scalefactor应用到宽度来重新计算线条包裹音乐条的位置,这实际上只是滚动条显示的一个问题。

任何人都可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:0)

我找到了方法。我需要将滚动条的绘图与主要乐谱视图的绘图分离。这样我就可以在不影响滚动条的情况下缩放主表示法视图。

所以我使用线性布局来创建2个视图 -

layout.setLayoutParams(new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT, 
                    100));
            layout.setOrientation(LinearLayout.HORIZONTAL);

            Globals.mMainView = new MainView(context);
            Globals.mMainView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 60));
            layout.addView(Globals.mMainView);

            Globals.mScrollbarView = new ScrollbarView(context);
            Globals.mScrollbarView.setLayoutParams(new LinearLayout.LayoutParams(20, LinearLayout.LayoutParams.WRAP_CONTENT, 0));
            layout.addView(Globals.mScrollbarView);

然后我从MainView中删除滚动条的显示并将它们放在ScrollbarView中。

然后我在ScrollbarView中使用onScroll事件来控制MainView中的滚动。我必须记住从ScrollbarView.computeVerticalScrollRange返回MainView的实际显示长度,以便滚动条大小显示确定。

因为我引用了保存为全局变量的两个视图,所以它们很容易在必要时相互交谈。