在android中创建包含两个页面的pagecurl

时间:2013-11-27 10:05:09

标签: android page-curl

你能给我一个解决方案,使用这个here创建有2页(如书)的卷曲页面,实际上,我尝试使用代码Harism here,但是当它很难实现时我的内容是动态而不是静态的。有什么解决方案吗?

2 个答案:

答案 0 :(得分:0)

由harism创建的页面卷曲动画动画三页。如果您可以控制设置文本,您可以实现您想要的。 :)

答案 1 :(得分:0)

要并排显示两个页面,您需要将viewmode设置为2.

mCurlView.setviewMode(2);

这里有几个用于动态设置位图的解决方案,最简单但不是最漂亮的是将绘图缓存设置为启用,然后从那里创建位图...

RootView.setDrawingCacheEnabled(true);
Bitmap bitmap = RootView.getDrawingCache();
RootView.setDrawingCacheEnabled(false);

我无法在curlview和RootView之间进行过渡以顺利运行...

对于我自己的应用程序,我所做的是使用Canvas将文本绘制到位图并将它们保存到文件以供PageProvider类使用

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.rgb(61, 61, 61));
paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
float yOffset = UPPERPADDING;
Rect bounds = new Rect();
paint.getTextBounds(mText, 0, mText.length(), bounds);

String path = Environment.getExternalStorageDirectory().toString();
File directory = new File (path +"/mydir");
if (!directory.exists()) directory.mkdir();
File filename = new File(path, "/mydir/"+DynamicFileName+".png");
if (!filename.exists()) filename.createNewFile();
canvas.drawText(line, bounds.left + PADDING, yOffset, paint);
FileOutputStream out = new FileOutputStream(filename);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
out.close();

你应该注意这个伪代码会留下一些问题,如多行文本,行间距,尝试和捕获等...

您还应注意,您可以通过动态或静态设置PageProvider类中的页数来增加或减少动画页面的数量...

我亲自使用List arraylist来保存我的位图所以我这样做了......

@Override
public int getPageCount() {
if (maps.isEmpty()){
    return 1;
}else{
    return maps.size()+1;}
}

并在loadBitmap方法中设置像这样的位图

b = Bitmap.createBitmap(660, 660, Bitmap.Config.ARGB_8888);
c = new Canvas(b);
d = new BitmapDrawable(getResources(), maps.get(index));

在updatePage方法中加载CurlView的前后页面上的地图,您需要将每个页面的正面和背面设置为动态地图,例如:

Bitmap front = loadBitmap(width, height, FrontIndex);
Bitmap back = loadBitmap(width, height, BackIndex);
page.setBitmap(front, CurlPage.SIDE_FRONT);
page.setBitmap(back, Curlpage.SIDE_BACK);