x5iqiok subir imagenes create application android view page-curl
mediafire

android - subir - registrar imgur



Animación Curl de página en Android? (2)

¿Alguien puede tener idea sobre ese efecto de curling de implementación para las vistas o el diseño? Busqué muchas cosas al respecto, pero no tengo ni idea. Remito los siguientes enlaces

https://github.com/harism/android_page_curl

http://code.google.com/p/android-page-curl/

Pero ambos enlaces se usan para dar efectos a las imágenes solamente. Intenté con el código Harism, simplemente creo un diseño y lo convierto en mapa de bits después de que lo visualicé. Para mí se ha logrado. Pero no funciona como una vista. Significa que solo una página estática (sin barras de desplazamiento si se excede el tamaño del texto). Por favor sugiérame con respecto a esto si alguna idea.

public class CurlActivity extends Activity { private CurlView mCurlView; private BitmapDrawable[] bmp = new BitmapDrawable[7]; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int index = 0; if (getLastNonConfigurationInstance() != null) { index = (Integer) getLastNonConfigurationInstance(); } mCurlView = (CurlView) findViewById(R.id.curl); mCurlView.setPageProvider(new PageProvider()); mCurlView.setSizeChangedObserver(new SizeChangedObserver()); mCurlView.setCurrentIndex(index); mCurlView.setBackgroundColor(0xFF202830); for (int i = 0; i < bmp.length; i++) { bmp[0] = (BitmapDrawable) getResources().getDrawable( R.drawable.obama); bmp[1] = (BitmapDrawable) getResources().getDrawable( R.drawable.road_rage); if (i < 2) continue; TextView b = new TextView(this); b.setLayoutParams(new LayoutParams(480, 854)); b.setText("page " + i); b.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); b.setTextColor(Color.BLACK); b.setBackgroundColor(Color.WHITE); bmp[i] = new BitmapDrawable(loadBitmapFromView(b)); } // This is something somewhat experimental. Before uncommenting next // line, please see method comments in CurlView. // mCurlView.setEnableTouchPressure(true); } public static Bitmap loadBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); v.draw(c); return b; } @Override public void onPause() { super.onPause(); mCurlView.onPause(); } @Override public void onResume() { super.onResume(); mCurlView.onResume(); } @Override public Object onRetainNonConfigurationInstance() { return mCurlView.getCurrentIndex(); } /** * Bitmap provider. */ private class PageProvider implements CurlView.PageProvider { // Bitmap resources. // private int[] mBitmapIds = { R.drawable.obama, R.drawable.road_rage, // R.drawable.taipei_101, R.drawable.world }; @Override public int getPageCount() { return 7; } private Bitmap loadBitmap(int width, int height, int index) { Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); b.eraseColor(0xFFFFFFFF); Canvas c = new Canvas(b); Drawable d = bmp[index]; // Drawable d = getResources().getDrawable(mBitmapIds[index]); int margin = 5; int border = 3; Rect r = new Rect(margin, margin, width - margin, height - margin); int imageWidth = r.width() - (border * 2); int imageHeight = imageWidth * d.getIntrinsicHeight() / d.getIntrinsicWidth(); if (imageHeight > r.height() - (border * 2)) { imageHeight = r.height() - (border * 2); imageWidth = imageHeight * d.getIntrinsicWidth() / d.getIntrinsicHeight(); } r.left += ((r.width() - imageWidth) / 2) - border; r.right = r.left + imageWidth + border + border; r.top += ((r.height() - imageHeight) / 2) - border; r.bottom = r.top + imageHeight + border + border; Paint p = new Paint(); /** * Border Color */ p.setColor(Color.RED); //p.setColor(0xFFC0C0C0); c.drawRect(r, p); r.left += border; r.right -= border; r.top += border; r.bottom -= border; d.setBounds(r); d.draw(c); return b; } @Override public void updatePage(CurlPage page, int width, int height, int index) { switch (index) { // First case is image on front side, solid colored back. case 0: { Bitmap front = loadBitmap(width, height, 0); page.setTexture(front, CurlPage.SIDE_FRONT); page.setColor(Color.rgb(180, 180, 180), CurlPage.SIDE_BACK); break; } // Second case is image on back side, solid colored front. case 1: { Bitmap back = loadBitmap(width, height, 2); page.setTexture(back, CurlPage.SIDE_BACK); page.setColor(Color.CYAN, CurlPage.SIDE_FRONT); break; } // Third case is images on both sides. case 2: { Bitmap front = loadBitmap(width, height, 1); Bitmap back = loadBitmap(width, height, 3); page.setTexture(front, CurlPage.SIDE_FRONT); page.setTexture(back, CurlPage.SIDE_BACK); break; } // Fourth case is images on both sides - plus they are blend against // separate colors. case 3: { Bitmap front = loadBitmap(width, height, 2); Bitmap back = loadBitmap(width, height, 1); page.setTexture(front, CurlPage.SIDE_FRONT); page.setTexture(back, CurlPage.SIDE_BACK); page.setColor(Color.argb(127, 170, 130, 255), CurlPage.SIDE_FRONT); page.setColor(Color.WHITE, CurlPage.SIDE_BACK); break; } // Fifth case is same image is assigned to front and back. In this // scenario only one texture is used and shared for both sides. case 4: Bitmap front = loadBitmap(width, height, 0); page.setTexture(front, CurlPage.SIDE_BOTH); page.setColor(Color.argb(127, 255, 255, 255), CurlPage.SIDE_BACK); break; } } } /** * CurlView size changed observer. */ private class SizeChangedObserver implements CurlView.SizeChangedObserver { @Override public void onSizeChanged(int w, int h) { if (w > h) { mCurlView.setViewMode(CurlView.SHOW_TWO_PAGES); mCurlView.setMargins(.1f, .05f, .1f, .05f); } else { mCurlView.setViewMode(CurlView.SHOW_ONE_PAGE); mCurlView.setMargins(.1f, .1f, .1f, .1f); } } } }

captura de pantalla como esta.



Al deslizar, puede convertir su vista dinámica en datos de mapa de bits y luego pasarla a la biblioteca de curvatura de página (ocultar la vista real). Después de que se haya completado el efecto de curvatura de la página, puede restaurar su vista.