实例介绍
【实例简介】
【实例截图】
【核心代码】
PageTurnActivity.java
package com.anjoyoe.luu; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.Window; import android.view.WindowManager; import android.view.animation.AnimationUtils; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; import android.widget.Toast; import com.anjoyoe.tool.BookPageFactory; import com.anjoyoe.widget.Mymenu; import com.anjoyoe.widget.PageWidget; public class PageTurnActivity extends Activity { private PageWidget mPageWidget; Bitmap mCurPageBitmap, mNextPageBitmap; Canvas mCurPageCanvas, mNextPageCanvas; BookPageFactory pagefactory; File filepath; private int screenWidth = 0; private int screenHeight = 0; // --------------------卢--------------- public Mymenu mMenu; SeekBar bar; SharedPreferences pre; SharedPreferences.Editor ed; // --------------------lu-------------------- private static final int[] resBitmap = { R.drawable.p1, R.drawable.p2, R.drawable.p3 }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); List<Bitmap> bitmaps = new ArrayList<Bitmap>(); Resources res = getResources(); for (int r : resBitmap) { bitmaps.add(((BitmapDrawable) res.getDrawable(r)).getBitmap()); } DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; mPageWidget = new PageWidget(this, screenWidth, screenHeight); pagefactory = new BookPageFactory(this, bitmaps, screenWidth, screenHeight); // ---------------------卢--------------------------------------- pre = getSharedPreferences("activit",MODE_WORLD_WRITEABLE); ed = pre.edit(); int b = pre.getInt("progress", 0); setContentView(R.layout.reads); LinearLayout liner = (LinearLayout) findViewById(R.id.reader); liner.addView(mPageWidget); mMenu = (Mymenu) findViewById(R.id.men); bar = (SeekBar) findViewById(R.id.seek); bar.setProgress(b); TextView size = (TextView) findViewById(R.id.textSize); size.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { mMenu.setVisibility(View.GONE); bar.setVisibility(View.VISIBLE); } }); bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar ba) { ba.setMax(100); pagefactory.setTextSize(ba.getProgress() 10); pagefactory.onDraw(mCurPageCanvas); pagefactory.onDraw(mNextPageCanvas); mPageWidget.invalidate(); ed.putInt("progress", ba.getProgress()); ed.commit(); } @Override public void onStartTrackingTouch(SeekBar arg0) { } @Override public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { } }); // ---------------------------------------------- mCurPageBitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888); mNextPageBitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888); mCurPageCanvas = new Canvas(mCurPageBitmap); mNextPageCanvas = new Canvas(mNextPageBitmap); pagefactory.setBgBitmap(BitmapFactory.decodeResource( this.getResources(), R.drawable.bg)); try { Intent intent = getIntent(); File file = (File) intent.getSerializableExtra("way"); filepath = file; pagefactory.openbook(filepath); pagefactory.onDraw(mCurPageCanvas); } catch (IOException e1) { e1.printStackTrace(); Toast.makeText(this, "电子书不存在,请将test.txt放在SD卡根目录下", Toast.LENGTH_SHORT).show(); } mPageWidget.setBitmaps(mCurPageBitmap, mCurPageBitmap); mPageWidget.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent e) { boolean ret = false; if (v == mPageWidget) { if (e.getAction() == MotionEvent.ACTION_DOWN) { mPageWidget.calcCornerXY(e.getX(), e.getY()); pagefactory.onDraw(mCurPageCanvas); if (mPageWidget.dragToRight()) { try { pagefactory.prePage(); } catch (IOException e1) { e1.printStackTrace(); } if (pagefactory.isFirstPage()) return false; mPageWidget.abortAnimation(); pagefactory.onDraw(mNextPageCanvas); } else { try { pagefactory.nextPage(); } catch (IOException e1) { e1.printStackTrace(); } if (pagefactory.isLastPage()) return false; mPageWidget.abortAnimation(); pagefactory.onDraw(mNextPageCanvas); } mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap); } ret = mPageWidget.doTouchEvent(e); return ret; } return false; } }); } // ---------------------卢红伟增加--------------------- public void setBgBitmap() { pagefactory.setBgBitmap(BitmapFactory.decodeResource( this.getResources(), R.drawable.cartoon_girls)); pagefactory.onDraw(mCurPageCanvas); pagefactory.onDraw(mNextPageCanvas); mPageWidget.invalidate(); } // menu事件动画 public boolean onCreateOptionsMenu(Menu menu) { menu.add(""); return super.onCreateOptionsMenu(menu); } public boolean onMenuOpened(int featureId, Menu menu) { if (mMenu != null) { if (mMenu.isShown()) { mMenu.setVisibility(View.GONE); mMenu.startAnimation(AnimationUtils.loadAnimation(this, R.anim.gone)); } else { mMenu.setVisibility(View.VISIBLE); mMenu.startAnimation(AnimationUtils.loadAnimation(this, R.anim.show)); } } return false; } // ---------------------------------------------------- }
reads.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@ id/reader" android:layout_width="fill_parent" android:layout_height="wrap_content" > </LinearLayout> <SeekBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@ id/seek" android:visibility="gone" android:layout_gravity="bottom" /> <com.anjoyoe.widget.Mymenu android:id="@ id/men" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:visibility="gone" /> </FrameLayout>
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)