package com.lfk.justwetools.View.ReadView; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import com.lfk.justwetools.R; public class ReadView extends View { private Bitmap mCurrentPageBitmap; private Canvas mCurrentPageCanvas; private PageFactory pagefactory; private int font_size = 60; private SharedPreferences sp; private int[] position = new int[]{0, 0}; private int width; private int height; public ReadView(Context context ,String path) { super(context); sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); font_size = sp.getInt("font_size", 60); WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); width = manager.getDefaultDisplay().getWidth(); height = manager.getDefaultDisplay().getHeight(); Log.e(width + ":宽", height + ":高"); mCurrentPageBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); mCurrentPageCanvas = new Canvas(mCurrentPageBitmap); pagefactory = new PageFactory(context,width, height, font_size); try { position[0] = sp.getInt("begin",0); position[1] = sp.getInt("end",0); Log.e("start" + position[0], "end" + position[1]); pagefactory.setBgBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.bg)); pagefactory.openBook(path, position); pagefactory.onDraw(mCurrentPageCanvas); } catch (Exception e) { // TODO: handle exception } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); canvas.drawBitmap(mCurrentPageBitmap, 0, 0, null); canvas.restore(); } public void setBackGround(Bitmap bitmap){ pagefactory.setBgBitmap(bitmap); } public void setDrawBitMap(Bitmap bitmap){ mCurrentPageBitmap = bitmap; } public void setOnPause(){ position = pagefactory.getPosition(); SharedPreferences.Editor editor = sp.edit(); editor.putInt("begin", position[0]); editor.putInt("end", position[1]); editor.apply(); int fontSize = pagefactory.getTextFont(); SharedPreferences.Editor editor2 = sp.edit(); editor2.putInt("font_size", fontSize); editor2.apply(); } public void setFont_size(int font_size) { pagefactory.setTextFont(font_size); } public void setPresent(int present){ pagefactory.setPercent(present); } public void refresh(){ pagefactory.onDraw(mCurrentPageCanvas); setDrawBitMap(mCurrentPageBitmap); invalidate(); } //&& event.getY() > height * 2 / 3 @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN ) { if (event.getX() > width / 2) { pagefactory.nextPage(); pagefactory.onDraw(mCurrentPageCanvas); setDrawBitMap(mCurrentPageBitmap); } else { pagefactory.prePage(); pagefactory.onDraw(mCurrentPageCanvas); setDrawBitMap(mCurrentPageBitmap); } invalidate(); return true; } return false; } }