我有自定义视图,加载此视图时,我将位图绘制到画布中,这个位图是根据pdf页面的长度和大小绘制的。我为用户提供了2个按钮,用于绘制路径和在画布上绘制文本。
以两种方式将此视图添加到我的父级中:
1。在父布局中创建子布局(LinearLayout或RelativeLayout),并在CustomView中以编程方式添加Scroller并将自定义视图添加到childLayout中。
xml布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_pdf_viewer_parent_relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/custom_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
/RelativeLayout>
2。在Parent布局中创建子布局(Horizontal Scrollview内的ScrollView)并将自定义视图添加到childLayout(ScrollView)中。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.pakagename.CustomHorizontalScrillView
android:id="@+id/pages_horizontal_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/top_buttons_layout"
android:fillViewport="true" >
<com.pakagename.CustomVerticalScrollView
android:id="@+id/pages_vertical_scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" />
</com.cudrivepdfeditor.CustomHorizontalScrillView>
</RelativeLayout>
为了向画布添加滚动,我使用onMeasure(int widthMeasureSpec,int heightMeasureSpec)。
在第一种情况下:
但是这个onMeasure在第一种情况下不起作用。因为自定义视图以编程方式添加到LinearLayout.But中,所以我将滚动条添加到自定义视图中。我不知道为什么onMeasure不起作用。但是在调试模式widthMeasureSpec中,heightMeasureSpec不是null而不是0那些具有不同的值是什么确切的文件有。
在第二种情况下:
在这种情况下,我将自定义视图添加到我的verticalscrollview中,这个verticalscrollview放在horizantalscrollview中。在这种情况下onMeasure()方法调用多次,它将滚动添加到customview和canvas.Canvas内容也滚动到我的时候滚动。
但在我的情况下我也有缩放功能。当我点击缩放++按钮画布不缩放而onMeasure()也没有给出适当的宽度和高度。
在我的缩放++()中我调用了measure(requiredWidth,requiredHeight)方法。
如何滚动和缩放画布内容?任何人都有任何想法请帮助我。我很长时间都坚持使用此功能。
编辑#1:
@Override
public void onDraw(Canvas canvas) {
drawPages(canvas); // This drawPages(canvas) method draw a pages on canvas
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
this.width = w;
this.height = h;
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap); // Here I am creating new bitmap on canvas and I am drawing paths and text on this canvas.
}
这里我的问题是当我在onDraw()的画布上绘制路径时,它会画一条路径,但是当我触摸到路径是休息时。如果我在mCanvas上画一条路径它的绘图路径,它没有重置。但我如何用onDraw()画布滚动这个mCanvas。