Во-первых, Харизм, спасибо, что поделились этим прекрасным фреймворком!:)
Теперь только для дополнения ответа Харизма:
При работе с журналами, книгами и т. Д. Мы имеем дело с неопределенным количеством страниц.
ВПример, представленный в классе CurlActivity проекта Harism-Android-Page-Curl, использует «Switch» для управления страницами.Чтобы соответствовать моим потребностям, мне пришлось изменить метод «updatePage», а затем более соответствующим образом контролировать свои журналы, независимо от количества страниц.
Мне нужно было представить схему ниже, в соответствии сИндекс (самой сигнатуры метода) и текущее устройство ориентации:
альбомная ориентация («Сторона назад» со следующей страницей)
Индекс |Страница слева |Страница справа
0 |0 |1
1 |2 |3
2 |4 |4
3 |6 |7
4 |8 |9
Ориентация портрета («Боковая спинка» с зеркальным отображением той же страницы)
Указатель |Страница
0 |0
1 |1
2 |2
3 |3
4 |4
....
Чтобы реализовать эту схему, сначала нужно изменить метод getPageCount таким образом:
public int getPageCount() {
//return 5;
int pagesCount = 0;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int wwidth = displaymetrics.widthPixels;
int hheight = displaymetrics.heightPixels;
if(wwidth > hheight){
if((mBitmapIds.length % 2) > 0)
pagesCount = (mBitmapIds.length / 2) + 1;
else
pagesCount = mBitmapIds.length / 2;
}else{
pagesCount = mBitmapIds.length;
}
return pagesCount;
}
Это позволит счетчику страниц вернуть фактическуюколичество страниц.
Затем измените метод updatePage, соответствует приведенному ниже коду:
public void updatePage(CurlPage page, int width, int height, int index) {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int wwidth = displaymetrics.widthPixels;
int hheight = displaymetrics.heightPixels;
if(wwidth > hheight){
System.out.println("case landscape orientation...");
Bitmap front = loadBitmap(width, height, (index * 2));
Bitmap back = loadBitmap(width, height, (index * 2) + 1);
Matrix matrix = new Matrix();
matrix.preScale(-1.0f, 1.0f);
Bitmap mirroredBitmap = Bitmap.createBitmap(back, 0, 0, back.getWidth(), back.getHeight(), matrix, false);
page.setTexture(front, CurlPage.SIDE_FRONT);
page.setTexture(mirroredBitmap, CurlPage.SIDE_BACK);
}else{
System.out.println("case portrait orientation...");
Bitmap front = loadBitmap(width, height, index);
Bitmap back = loadBitmap(width, height, index);
page.setTexture(front, CurlPage.SIDE_FRONT);
page.setTexture(back, CurlPage.SIDE_BACK);
}}}
Я надеюсь, что помог!
И еще раз, спасибо зарамки Harism!