安卓小说阅读器完整代码

package com.example.viewpagerok;

import java.io.File;
import java.util.ArrayList;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.ContextMenu;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint({ "InflateParams", "ShowToast", "ViewHolder" })
public class MainActivity extends Activity {
	ArrayList<View> arrayList;
	ArrayList<String>name;
	//如果是公共变量,每次界面进入,gridview的setadapter就会执行一次,就会得到一个getdata,这个变量就会追加一个,所以不能是公共变量
	ArrayList<String>progress=new ArrayList<String>();
	ArrayList<String>pathList2;
	ArrayList<Integer>aIntegers=new ArrayList<Integer>();
	int[] bookimage={R.drawable.book1,R.drawable.book2,R.drawable.book4,R.drawable.book5,R.drawable.book6,R.drawable.book7,R.drawable.book8,R.drawable.book9,R.drawable.book10,R.drawable.book11,R.drawable.book12,R.drawable.book13};
	int[] web={R.drawable.hjsm,R.drawable.zl,R.drawable.yanqing888,R.drawable.xs8,R.drawable.xiaoxiangshuyuan};
	String[]book={"http://hjsm.tom.com","http://www.zhulang.com","http://www.yanqing888.net/","http://www.xs8.cn/","http://www.xxsy.net/"};
	ViewPager viewPager;
	TextView sdcard;
	TextView sdcard1;
	String sdpathString;
	String sdpathString1;
	int count = 0;
	View view;
	static String[] a = new String[] { "1", "2", "3", "4", "5" };
	Button button;
	SQLiteDatabase sqLiteDatabase;
	Animation animation;
	int itemposition;
    ArrayList<ArrayList<String>> aList = new ArrayList<ArrayList<String>>();
    ArrayList<ArrayList<String>> pathr = new ArrayList<ArrayList<String>>();
	ArrayList<String> filelist;
	ArrayList<String> pathlist;
	ListView listView;
	ArrayAdapter<String> adapter;
	LayoutInflater layoutInflater;
	TextView textView;
	TextView textView1;
	String sql;
	String tab;
	TextView textViewmain;
	TextView textViewmain1;
	TextView textViewmain2;
	GridView gridView;
	View item;
	View booknetview;
	TextView textViewforpage3;
	Drawable drawable;
String elments;
View view1;
LinearLayout linearLayout;
LinearLayout linearLayoutq;
LinearLayout linearLayoutw;
LinearLayout linearLayoute;
LinearLayout linearLayoutr;
c c;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
		getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
		setContentView(R.layout.activity_main);
		if (!Environment.MEDIA_MOUNTED.equals(Environment
				.getExternalStorageState())) {
			Toast.makeText(MainActivity.this, "请确认内置SD卡",1).show();
			finish();
		}
		sqLiteDatabase=new shujuku(getApplicationContext()).getWritableDatabase();
		sql="create table if not exists bookv(id integer primary key autoincrement,name varchar(9),progress integer,path varchar(33))";
		sqLiteDatabase.execSQL(sql);
	//	animation=AnimationUtils.loadAnimation(this, R.anim.halftouming);

		linearLayout=(LinearLayout)findViewById(R.id.linearone);
		linearLayoute=(LinearLayout)findViewById(R.id.lineartwo);
		drawable=linearLayoute.getBackground();
	//	linearLayoutq=(LinearLayout)findViewById(R.id.linearthree);

	//	linearLayoutw=(LinearLayout)findViewById(R.id.linearfour);
		linearLayoutr=(LinearLayout)findViewById(R.id.linearzim);
		linearLayout.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				viewPager.setCurrentItem(0);
	//			linearLayout.startAnimation(animation);
		//		linearLayout.setAlpha(0.5f);

		//		Toast.makeText(MainActivity.this, "1", 1).show();
			}
		});
		linearLayoute.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				viewPager.setCurrentItem(1);
			}
		});
		linearLayoutr.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				viewPager.setCurrentItem(2);
			}
		});
/*		linearLayoutq.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				viewPager.setCurrentItem(2);
				Toast.makeText(MainActivity.this, "3", 1).show();
			}
		});
		*/
		// 为什么在viewpager实例化之前可以调用呢?静态的?答案是否定的,即使是静态也不会因为是静态而第一个加载,正确的原因是,oncreate函数,第一步加载的层次是实例化层次,所有实例化都会在第一批加载
		arrayList = new ArrayList<View>();
		layoutInflater = LayoutInflater.from(MainActivity.this);
		view = layoutInflater.inflate(R.layout.page1, null);

		/*
		 * button=(Button)view.findViewById(R.id.button2);//一个xml布局会被解析成一个class,
		 * 所以有view.find`````` button.setOnClickListener(new OnClickListener() {
		 *
		 * @Override public void onClick(View v) { // TODO Auto-generated method
		 * stub count++; button.setText(a[count]); } });
		 */
		arrayList.add(view);
		view1=layoutInflater.inflate(R.layout.page2, null);

		arrayList.add(view1);
		booknetview=layoutInflater.inflate(R.layout.page3, null);
		arrayList.add(booknetview);
//		View viewq=layoutInflater.inflate(R.layout.page3, null);
//		arrayList.add(viewq);
	//	textViewforpage3=(TextView)viewq.findViewById(R.id.textView1);
		viewPager = (ViewPager) findViewById(R.id.viewPager);

		viewPager.setAdapter(new dxc());

				// TODO Auto-generated method stub

    	getfilelist(Environment.getExternalStorageDirectory().toString());

//			ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
//					MainActivity.this, android.R.layout.simple_list_item_1,
//					filelist);

	/*	listView.setAdapter(new listviewadapter());
	//1	Toast.makeText(MainActivity.this, Integer.toString(aList.size()), 1).show();
listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				// filelist=new ArrayList<String>();
				File file = new File(pathr.get(pathr.size()-1).get(position));
				getfilelist(pathr.get(pathr.size()-1).get(position));
				if (file.isDirectory()) {
					// getfilelist(filelist.get(position));
					// ArrayAdapter<String>adapter=new
					// ArrayAdapter<String>(MainActivity.this,
					// android.R.layout.simple_list_item_1, filelist);
					// 这里的filelist取的是局部变量,就是新传值进去的filelist还在公共变量,这里取的是之前的值,所以,给函数add一个返回值。

					// 这里返回的还是之前的值,所以错误,集合公共变量,getfilelist()得到的就是上次的集合,所以不会刷新,必须把集合设置为局部变量,在局部new才行
					// 将集合在公共new,是为了递归,有一个特定的集合接受所有信息,而这里,则需要不同的集合,每一次传参数都得到新的实例,否则总会指向上一次
					count++;

					Toast.makeText(MainActivity.this, Integer.toString(aList.size()), 1).show();

					listView.setAdapter(new listviewadapter());

				}
				else {
					Toast.makeText(MainActivity.this, "请长按加入书架", 1).show();
				}
			}

});
*/

		linearLayout.setBackgroundColor(Color.parseColor("#FFCC66"));

		viewPager.setOnPageChangeListener(new OnPageChangeListener() {

					@Override
					public void onPageSelected(int arg0) {
						// TODO Auto-generated method stub
				//		viewPager.setCurrentItem(0);
						switch (arg0) {
						case 0:
		//				Drawable drawable=linearLayoute.getBackground();
						linearLayoute.setBackgroundColor(Color.parseColor("#00000000"));
							linearLayout.setBackgroundColor(Color.parseColor("#FFCC66"));
							linearLayoutr.setBackgroundColor(Color.parseColor("#00000000"));
					//		linearLayout.setAlpha(0.3f);
						//	linearLayoute.setBackgroundColor(Color.parseColor("#CCFF66"));

				//			registerForContextMenu(listView);
							getfilelist(Environment.getExternalStorageDirectory().toString());

				//			ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
				//					MainActivity.this, android.R.layout.simple_list_item_1,
				//					filelist);
							listView = (ListView) view.findViewById(R.id.listView1);
							registerForContextMenu(listView);
							listView.setAdapter(new listviewadapter());
							Toast.makeText(MainActivity.this,"alist"+ Integer.toString(aList.size()), 1).show();
							Toast.makeText(MainActivity.this, "path"+Integer.toString(pathr.size()), 1).show();
							listView.setOnItemClickListener(new OnItemClickListener() {

								@Override
								public void onItemClick(AdapterView<?> parent, View view,
										int position, long id) {
									// TODO Auto-generated method stub
									// filelist=new ArrayList<String>();

									File file = new File(pathr.get(pathr.size()-1).get(position));

									if (file.isDirectory()) {
										getfilelist(pathr.get(pathr.size()-1).get(position));
										// getfilelist(filelist.get(position));
										// ArrayAdapter<String>adapter=new
										// ArrayAdapter<String>(MainActivity.this,
										// android.R.layout.simple_list_item_1, filelist);
										// 这里的filelist取的是局部变量,就是新传值进去的filelist还在公共变量,这里取的是之前的值,所以,给函数add一个返回值。

										// 这里返回的还是之前的值,所以错误,集合公共变量,getfilelist()得到的就是上次的集合,所以不会刷新,必须把集合设置为局部变量,在局部new才行
										// 将集合在公共new,是为了递归,有一个特定的集合接受所有信息,而这里,则需要不同的集合,每一次传参数都得到新的实例,否则总会指向上一次
										count++;

					//					Toast.makeText(MainActivity.this, Integer.toString(aList.size()), 1).show();

										listView.setAdapter(new listviewadapter());

									}
									else {
										Toast.makeText(MainActivity.this, "请长按加入书架", 1).show();
									}
								}

				});
							break;
						case 1:

				//			linearLayoute.setAlpha(0.5f);
							linearLayoute.setBackgroundColor(Color.parseColor("#FFCC66"));
							linearLayout.setBackgroundColor(Color.parseColor("#00000000"));
							linearLayoutr.setBackgroundColor(Color.parseColor("#00000000"));

							getdata();
							if (name.size()==0) {
								Toast.makeText(MainActivity.this, "您还没有加入图书", 1).show();
							}
							else {

								c=new c();
								gridView=(GridView)view1.findViewById(R.id.gridView1);
								gridView.setAdapter(c);
								gridView.setOnItemClickListener(new OnItemClickListener() {

									@Override
									public void onItemClick(AdapterView<?> parent,
											View view, int position, long id) {
										// TODO Auto-generated method stub
										Intent intent=new Intent(MainActivity.this,novel.class);
										intent.putExtra("path", pathList2.get(position));
										File file=new File(pathList2.get(position));
										if (!file.exists()) {
											Toast.makeText(MainActivity.this, "请确认该文件存在", 1).show();
										}
										else{
											intent.putExtra("name", name.get(position));
											//		Bundle bundle=new Bundle();
											//		bundle.putInt("progress", aIntegers.get(position));
											//		intent.putExtra("progress", bundle);
													startActivity(intent);
										}

									}
								});
							}

					//		Toast.makeText(MainActivity.this, "tab1", Toast.LENGTH_LONG).show();
							break;
				//		case 2:
				//			textViewforpage3.setText("9");
				//			linearLayoutq.setAlpha(0.5f);
				//			linearLayoutq.setBackgroundColor(Color.parseColor("#FFFF33"));
				//			linearLayoute.setBackgroundColor(Color.parseColor("#CCFF66"));
				//			linearLayout.setBackgroundColor(Color.parseColor("#CCFF66"));
				//			textViewmain.setBackgroundColor(Color.parseColor("#CCFF66"));
			/*				if (linearLayoute.getAlpha()==0.5f) {
								linearLayoute.setAlpha(1.0f);
							}
							if (linearLayout.getAlpha()==0.5f) {
								linearLayout.setAlpha(1.0f);
							}
							if (linearLayoutw.getAlpha()==0.5) {
								linearLayoutw.setAlpha(1.0f);
							}
							if (linearLayoutr.getAlpha()==0.5) {
								linearLayoutr.setAlpha(1.0f);
							}
							*/
				//			break;
						case 2:
							linearLayoutr.setBackgroundColor(Color.parseColor("#FFCC66"));
							linearLayout.setBackgroundColor(Color.parseColor("#00000000"));
							linearLayoute.setBackgroundColor(Color.parseColor("#00000000"));
							ListView listView=(ListView)booknetview.findViewById(R.id.listView1);
							listView.setAdapter(new booknet());
							listView.setOnItemClickListener(new OnItemClickListener() {

								@Override
								public void onItemClick(AdapterView<?> parent,
										View view, int position, long id) {
									// TODO Auto-generated method stub
									Intent intent=new Intent(MainActivity.this, netbook.class);
									intent.putExtra("web", book[position]);
									startActivity(intent);
								}
							});
							break;

						}
					}

					@Override
					public void onPageScrolled(int arg0, float arg1, int arg2) {
						// TODO Auto-generated method stub

					}

					@Override
					public void onPageScrollStateChanged(int arg0) {
						// TODO Auto-generated method stub

					}
				});
		 viewPager.setCurrentItem(1);
		 viewPager.setCurrentItem(0);
	}

			//`````````````````````````````````````````````````````		

			public ArrayList<String> getfilelist(String path) {
				// TODO Auto-generated method stub
				File file = new File(path);

				File[] files = file.listFiles();
				filelist = new ArrayList<String>();
				pathlist = new ArrayList<String>();
				for (int i = 0; i < files.length; i++) {
					if (files[i].isDirectory()
							|| files[i].getName().endsWith("txt")) {
						filelist.add(files[i].getName());
						pathlist.add(files[i].getAbsolutePath());
					}
				}
				aList.add(filelist);
				pathr.add(pathlist);
				return filelist;
			}

	class dxc extends PagerAdapter {

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return arrayList.size();
		}

		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			// TODO Auto-generated method stub
			return arg0 == arg1;
		}

@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			// TODO Auto-generated method stub
			((ViewPager) container).removeView(arrayList.get(position));
		}

		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			// TODO Auto-generated method stub
			((ViewPager) container).addView(arrayList.get(position), 0);
			return arrayList.get(position);
		}
		@Override
		public void restoreState(Parcelable state, ClassLoader loader) {
			// TODO Auto-generated method stub
			super.restoreState(state, loader);
		}
		@Override
		public void notifyDataSetChanged() {
			// TODO Auto-generated method stub
			super.notifyDataSetChanged();
		}
	}

	/*
	 * @Override public void onBackPressed() { // TODO Auto-generated method
	 * stub count--; if (count>=0&&viewPager.getCurrentItem()==0){
	 * button.setText(a[count]); } if (count<0) { finish(); }
	 * Toast.makeText(MainActivity.this,
	 * Integer.toString(viewPager.getCurrentItem()), 1).show(); }
	 */
	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		count--;
		if (count >= 0 && viewPager.getCurrentItem() == 0) {
			aList.remove(aList.size() - 1);
			pathr.remove(pathr.size()-1);
			//多线程访问一个变量导致错误,alist的值没有及时传递
	//		adapter = new ArrayAdapter<String>(MainActivity.this,
	//				android.R.layout.simple_list_item_1,
	//				aList.get(aList.size() - 1));
	//		Toast.makeText(MainActivity.this, Integer.toString(aList.size()), 1).show();
			listView.setAdapter(new listviewadapter());
		} else {
			super.onBackPressed();
		}
	}

	class listviewadapter extends BaseAdapter {
		final int type = 0;
		final int type1 = 1;

		public listviewadapter() {
			layoutInflater = LayoutInflater.from(MainActivity.this);
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return aList.get(aList.size()-1).size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return aList.get(aList.size()-1).get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public int getItemViewType(int position) {
			// TODO Auto-generated method stub
	//		Toast.makeText(MainActivity.this, Integer.toString(aList.size()), 1).show();
			if ((aList.get(aList.size()-1).get(position)).endsWith("txt")) {
				return type;
			} else {
				return type1;
			}
		}

		@Override
		public int getViewTypeCount() {
			// TODO Auto-generated method stub
			return 2;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			int key = getItemViewType(position);
			if (convertView == null) {
				switch (key) {
				case type:
					//final作用
					convertView = layoutInflater.inflate(R.layout.viewtype1,
							parent, false);
					textView = (TextView) convertView
							.findViewById(R.id.textView1);
					convertView.setTag(1);
					break;
				case type1:
					convertView = layoutInflater.inflate(R.layout.viewt2,
							parent, false);
					textView1 = (TextView) convertView
							.findViewById(R.id.textView2);
					convertView.setTag(2);
				default:
					break;
				}
			} else {
				switch (key) {
				case type:
					convertView.getTag(1);
					break;
				case type1:
					convertView.getTag(2);
					break;
				}
			}
			switch (key) {
			case type:
				textView.setText(aList.get(aList.size()-1).get(position));

				break;
			case type1:
				textView1.setText(aList.get(aList.size()-1).get(position));
			}
			return convertView;
		}

	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		getMenuInflater().inflate(R.menu.main, menu);
		menu.setQwertyMode(true);
		super.onCreateContextMenu(menu, v, menuInfo);
	}
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();

		int index=info.position;
		int id = item.getItemId();
		if (aList.get(aList.size()-1).get(index).endsWith("txt")) {
			if (id == R.id.add) {

				tab=aList.get(aList.size()-1).get(index);
				String[] tabsplit=tab.split("\\.");
				sqLiteDatabase.execSQL("insert into bookv values(null,?,'0',?)",new String[]{tabsplit[0],pathr.get(pathr.size()-1).get(index)});
				Toast.makeText(MainActivity.this,"已经加入书架", Toast.LENGTH_LONG).show();

			}
		}

		return super.onContextItemSelected(item);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.

		return super.onOptionsItemSelected(item);
	}
	class shujuku extends SQLiteOpenHelper{

		public shujuku(Context context) {
			super(context, "sql", null, 1);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub

		}

	}
	class c extends BaseAdapter{
		int count1=0;
public c(){

}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub

			return name.size();

		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return name.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			count1++;
			count1=count1%bookimage.length;
			convertView=(View)layoutInflater.inflate(R.layout.item, null);
			ImageView imageView=(ImageView)convertView.findViewById(R.id.imageView1);
			TextView textView=(TextView)convertView.findViewById(R.id.textView1);
			imageView.setImageResource(bookimage[count1]);
			textView.setText(name.get(position));
			return convertView;
		}

	}
	void getdata(){
		name=new ArrayList<String>();
		pathList2=new ArrayList<String>();
		Cursor cursor=sqLiteDatabase.rawQuery("select * from bookv", null);
	//	if (cursor.getCount()==0) {
			//每次调用adapter都会调用这个方法,都会运行name.add(a+"/n"+p);结果每次都会增加一个,所以才会追加绘制!每个图片都不一样,表示的确不是重复绘制,而是数据源变化
		//	Toast.makeText(MainActivity.this, "您还没有加入图书", 1).show();
		//	name.add(" ");
	//	}
	//	else {

		while (cursor.moveToNext()) {

			String a=cursor.getString(cursor.getColumnIndex("name"));
			Integer b=cursor.getInt(cursor.getColumnIndex("progress"));
			String path=cursor.getString(cursor.getColumnIndex("path"));
			File file=new File(path);
			Float f=(float)b*10240/file.length();
	//		String p=Float.toString(f*100)+"%";
			name.add(a);
		//	progress.add(b.toString());
			pathList2.add(path);
			aIntegers.add(b);
		}
		}
	//}
	class booknet extends BaseAdapter{

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return book.length;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return book[position];
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
		 convertView=layoutInflater.inflate(R.layout.booknet, null);
		ImageView imageView=(ImageView)convertView.findViewById(R.id.imageView1);
		imageView.setImageResource(web[position]);
			return convertView;
		}

	}
}
<pre name="code" class="java">package com.example.viewpagerok;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;

@SuppressLint("SetJavaScriptEnabled") public class netbook extends Activity{
	WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	requestWindowFeature(Window.FEATURE_NO_TITLE);
	getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
	getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
	setContentView(R.layout.web);
	String web=getIntent().getStringExtra("web");
	webView=(WebView)findViewById(R.id.webview);
	webView.getSettings().setJavaScriptEnabled(true);
	webView.loadUrl(web);
	webView.setWebViewClient(new webclient());
}
class webclient extends WebViewClient{
	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		// TODO Auto-generated method stub
		view.loadUrl(url);
		return true;
	}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	// TODO Auto-generated method stub
	if (keyCode==KeyEvent.KEYCODE_BACK&&webView.canGoBack()) {
		webView.goBack();
		return true;
	}
	else {
		finish();
		return false;
	}
}
}
package com.example.viewpagerok;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;

import android.R.integer;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.ScrollView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint({ "ClickableViewAccessibility", "ShowToast", "InflateParams" }) public class novel extends Activity implements OnSeekBarChangeListener{
String pathString;
ScrollView scrollView;
int count;
int count1;
LinearLayout layout;
Integer progress;
TextView textView;
FileInputStream fileInputStream;
String string;
byte[]b;
byte[]q;
Integer progress1;
pop p;
Cursor cursor;
FileInputStream fileInputStreamx;
SQLiteDatabase bsqLiteDatabase;
String z;
touch buttontouch;
LayoutInflater layoutInflater1;
DisplayMetrics displayMetrics;
textsize t;
TextView textView666;
Float aFloat;
Integer progressforpauseInteger;
TextView textView111;
String cv;
TextView textView999;
Button button3;
View view1;
Integer j;
View view;
Cursor cursoraCursor;
Integer orginary;
boolean flag;
String name;
Cursor newyork;
SQLiteDatabase sqLiteDatabase;
	@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	requestWindowFeature(Window.FEATURE_NO_TITLE);
	getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
	getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
	setContentView(R.layout.novel);

	count=0;
	count1=0;
	Intent intent=getIntent();
	pathString=intent.getStringExtra("path");
	name=intent.getStringExtra("name");
	textView=(TextView)findViewById(R.id.textview);
	bsqLiteDatabase=new set(getApplicationContext()).getWritableDatabase();
	bsqLiteDatabase.execSQL("create table if not exists j(id integer primary key autoincrement,ci varchar(9))");
	bsqLiteDatabase.execSQL("create table if not exists h(id integer primary key autoincrement,size float)");
//	sqLiteDatabase.execSQL("create table if not exists proeqb(id integer primary key autoincrement,path varchar(33),jindu integer,touch integer)");
	bsqLiteDatabase.execSQL("create table if not exists "+name+" (id integer primary key autoincrement,pro integer,touch integer)");
	Cursor cursorq=bsqLiteDatabase.rawQuery("select * from j", null);
	if (cursorq.getCount()!=0) {
		cursorq.moveToLast();
		z=cursorq.getString(cursorq.getColumnIndex("ci"));
			textView.setBackgroundColor(Color.parseColor(z));

	}
	Cursor c=bsqLiteDatabase.rawQuery("select * from h", null);
	if (c.getCount()!=0) {
		c.moveToLast();
		aFloat=c.getFloat(c.getColumnIndex("size"));
		textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, aFloat);
	}

//	new Handler().post(new Runnable() {

	//	@Override
	//	public void run() {

			// TODO Auto-generated method stub
//	cursoraCursor=sqLiteDatabase.rawQuery("select * from proeqb where path=?",new String[]{pathString});

			SQLiteDatabase sqLiteDatabase=new MainActivity().new shujuku(getApplicationContext()).getWritableDatabase();
	//		sqLiteDatabase.execSQL("select * from bookv where path =?" ,new String[]{pathString});
			cursor=sqLiteDatabase.rawQuery("select * from bookv where path = ?", new String[]{pathString});

	//		if (cursoraCursor.getCount()==0) {
	//			orginary=0;
	//		}
				while (cursor.moveToNext()) {
					progress1=cursor.getInt(cursor.getColumnIndex("progress"));

				}

			scrollView = (ScrollView) findViewById(R.id.sc);
			layout=(LinearLayout)findViewById(R.id.lo);

			newyork=bsqLiteDatabase.rawQuery("select * from "+name, null);

			File file=new File(pathString);
			if (file.length()==0) {
				Toast.makeText(getApplicationContext(), "没有内容", 1).show();
				finish();
			}

			try {
			    fileInputStream=new FileInputStream(pathString);
				if (newyork.getCount()==0) {
					fileInputStream.skip(progress1*10240);
					flag=false;
					Toast.makeText(novel.this, "0", 1).show();
			//		orginary=0;
				}
				else {
				flag=true;
					newyork.moveToFirst();
					j=newyork.getInt(newyork.getColumnIndex("pro"));
					orginary=newyork.getInt(newyork.getColumnIndex("touch"));

					fileInputStream.skip(j+10240*orginary);
				//	Toast.makeText(novel.this, "count!=0", 1).show();
				}
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			b=new byte[10240];

			try {
				string = new String(b, 0, fileInputStream.read(b), "GBK");
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			textView.setText(string);
		scrollView.setOnTouchListener(new OnTouchListener() {

				@Override
				public boolean onTouch(View v, MotionEvent event) {
					// TODO Auto-generated method stub
					if (event.getAction()==MotionEvent.ACTION_UP){
						int y=scrollView.getScrollY();
						if (y==layout.getHeight()-scrollView.getHeight()) {
				//			cursoraCursor=sqLiteDatabase.rawQuery("select * from proeqb where path=?",new String[]{pathString});
							count++;

							count1++;
							try {

							//	fileInputStream.read(b);
				//				cursoraCursor=sqLiteDatabase.rawQuery("select * from proeqb where path=?",new String[]{pathString});

								textView.append(new String(b, 0, fileInputStream.read(b), "GBK"));
							} catch (IOException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
				//			cursoraCursor=sqLiteDatabase.rawQuery("select * from proeqb where path=?",new String[]{pathString});

						}
					}

					return false;
				}
			});
	//	}
//	});

}
	@Override
		public void onBackPressed() {
			// TODO Auto-generated method stub
		//安卓多线程访问一个变量,规则上是允许的,只是不允许子线程直接更新UI,还有就是数据错误,比如一个线程更新集合,另一个线程没收到数据,结果index超出了集合的总数,程序出错,但是规则上是允许的,只要不要求太精确,多线程还是好的。
//		SQLiteDatabase sqLiteDatabase=new MainActivity().sqLiteDatabase;
	//	cursoraCursor=sqLiteDatabase.rawQuery("select * from proeqb where path=?",new String[]{pathString});
/*		if (cursoraCursor.getCount()==0) {
			SQLiteDatabase sqLiteDatabase=new MainActivity().new shujuku(getApplicationContext()).getWritableDatabase();
			String a="UPDATE bookv SET progress = ";
			String b=Integer.toString(count+progress1);
			String c=" WHERE path = ";
		//	String c=" WHERE id = 0";
			String e="'";
			String f="'";
			String d=pathString;
			sqLiteDatabase.execSQL(a+b+c+e+d+f);
		}
		*/

		//	SQLiteDatabase sqLiteDatabase=new MainActivity().new shujuku(getApplicationContext()).getWritableDatabase();
			newyork=bsqLiteDatabase.rawQuery("select * from "+name, null);
			if (newyork.getCount()==0) {
				SQLiteDatabase sqLiteDatabase=new MainActivity().new shujuku(getApplicationContext()).getWritableDatabase();
				String a="UPDATE bookv SET progress = ";
				String b=Integer.toString(count+progress1);
				String c=" WHERE path = ";
			//	String c=" WHERE id = 0";
				String e="'";
				String f="'";
				String d=pathString;
				sqLiteDatabase.execSQL(a+b+c+e+d+f);
			}
		else {
			newyork.moveToFirst();
			Integer touch=newyork.getInt(newyork.getColumnIndex("touch"));
			String a="UPDATE "+name+ " SET touch = ";
			String b=Integer.toString(count1+touch);

			String c=" WHERE id = 1";
		//	String e="'";
		//	String f="'";
		//	String d=pathString;
			bsqLiteDatabase.execSQL(a+b+c);
		}

		super.onBackPressed();
		}
	@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			// TODO Auto-generated method stub

		if (keyCode==KeyEvent.KEYCODE_MENU) {
			displayMetrics=new DisplayMetrics();
			getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
			layoutInflater1=LayoutInflater.from(novel.this);
		    view1=layoutInflater1.inflate(R.layout.moon, null);
		    buttontouch=new touch();
			Button button=(Button)view1.findViewById(R.id.button1);
			button.setOnTouchListener(buttontouch);
			button.setBackgroundColor(Color.parseColor("#00000000"));
			Button button1=(Button)view1.findViewById(R.id.button2);
			button1.setBackgroundColor(Color.parseColor("#00000000"));
			button1.setOnTouchListener(buttontouch);
			Button button2=(Button)view1.findViewById(R.id.button3);
			button2.setBackgroundColor(Color.parseColor("#00000000"));
		 button2.setOnTouchListener(buttontouch);
		 button3=(Button)view1.findViewById(R.id.button4);
			button3.setBackgroundColor(Color.parseColor("#00000000"));
			button3.setOnTouchListener(buttontouch);
		//	button3.setBackgroundColor(Color.parseColor("#00000000"));
		//	PopupWindow popupWindow1=new PopupWindow(view1, 100, 100);
			PopupWindow popupWindow1=new PopupWindow(view1, displayMetrics.widthPixels, LayoutParams.WRAP_CONTENT);
			popupWindow1.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#999966")));
			popupWindow1.setFocusable(true);
			popupWindow1.setTouchable(true);
			popupWindow1.setOutsideTouchable(true);
			popupWindow1.showAtLocation(textView, Gravity.BOTTOM, 0, 0);
			button.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub

					p=new pop();
					View view=LayoutInflater.from(novel.this).inflate(R.layout.a, null);
					TextView textView1=(TextView)view.findViewById(R.id.textView1);
					TextView textView2=(TextView)view.findViewById(R.id.textView2);
					TextView textView3=(TextView)view.findViewById(R.id.textView3);
					TextView textView4=(TextView)view.findViewById(R.id.textView4);
					TextView textView5=(TextView)view.findViewById(R.id.textView5);
				//	Button textView6=(Button)view.findViewById(R.id.textView6);
					textView1.setTag(1);
					textView2.setTag(2);
					textView3.setTag(3);
					textView4.setTag(4);
					textView5.setTag(5);
				//	textView6.setTag(6);
					textView1.setOnClickListener(p);
					textView2.setOnClickListener(p);
					textView3.setOnClickListener(p);
					textView4.setOnClickListener(p);
					textView5.setOnClickListener(p);
				//	textView6.setOnClickListener(p);
			//		textView6.setText("\n"+"还"+"\n"+"原");
					DisplayMetrics displayMetrics=new DisplayMetrics();
					getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
					PopupWindow popupWindow=new PopupWindow(view,displayMetrics.widthPixels,LayoutParams.WRAP_CONTENT);
					popupWindow.setBackgroundDrawable(new ColorDrawable(0));

					popupWindow.setFocusable(true);
					popupWindow.setTouchable(true);
					popupWindow.setOutsideTouchable(true);
					popupWindow.showAtLocation(textView, Gravity.CENTER, 0, 0);
			/*		if (popupWindow.isShowing()) {
						button3=(Button)view1.findViewById(R.id.button4);
						button3.setBackgroundColor(Color.parseColor("#00000000"));
						button3.setOnTouchListener(buttontouch);
						button3.setOnClickListener(new OnClickListener() {

							@Override
							public void onClick(View v) {
								// TODO Auto-generated method stub
								textView.setBackgroundColor(Color.parseColor("#00000000"));
											bsqLiteDatabase.execSQL("delete from j");
							}
						});
					}*/

				}
			});
			button1.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					sqLiteDatabase=new MainActivity().new shujuku(getApplicationContext()).getWritableDatabase();
					Cursor cursor=sqLiteDatabase.rawQuery("select * from bookv where path = "+"'"+pathString+"'", null);
					cursor.moveToFirst();
					Integer pro=cursor.getColumnIndex("progress");

					View view=layoutInflater1.inflate(R.layout.qwer, null);
					PopupWindow popupWindow=new PopupWindow(view, displayMetrics.widthPixels, LayoutParams.WRAP_CONTENT);
					popupWindow.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));
					popupWindow.setFocusable(true);
					popupWindow.setTouchable(true);
					popupWindow.setOutsideTouchable(true);
					popupWindow.showAtLocation(textView, Gravity.CENTER, 0, 0);
					SeekBar seekBar=(SeekBar)view.findViewById(R.id.seekBar1);
					 textView111=(TextView)view.findViewById(R.id.textview);
					 textView666=(TextView)view.findViewById(R.id.textView1);
					 textView999=(TextView)view.findViewById(R.id.textview2);
					if (flag==true) {
						Float gFloat=(float)( j+10240*orginary)/new File(pathString).length()*100;
						 BigDecimal bigDecimal=new BigDecimal(gFloat);
						 Float f1=bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
						textView111.setText("complete:"+ Float.toString(f1)+"%");
					}
					else {
						Float float1=(float) ((pro+count)*10240/new File(pathString).length())*100;
						 BigDecimal bigDecimal=new BigDecimal(float1);
						 Float f1=bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
						 textView111.setText("complete:"+Float.toString(f1)+"%");
					}

					seekBar.setOnSeekBarChangeListener(novel.this);
				}
			});
			button2.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					t=new textsize();
					view=layoutInflater1.inflate(R.layout.liuyifeiliuyanrushen, null);
					PopupWindow popupWindow=new PopupWindow(view, displayMetrics.widthPixels, LayoutParams.WRAP_CONTENT);
					popupWindow.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));
					popupWindow.setFocusable(true);
					popupWindow.setTouchable(true);
					popupWindow.setOutsideTouchable(true);
					popupWindow.showAtLocation(textView, Gravity.CENTER, 0, 0);
					Button textView1=(Button)view.findViewById(R.id.textView1);
					Button textView2=(Button)view.findViewById(R.id.textView2);
					Button textView3=(Button)view.findViewById(R.id.textView3);
					Button textView4=(Button)view.findViewById(R.id.textView4);
					Button textView5=(Button)view.findViewById(R.id.textView5);
					Button textView6=(Button)view.findViewById(R.id.textView6);
				//	Button button=(Button)view.findViewById(R.id.textView7);
					textView1.setBackgroundColor(Color.parseColor("#00000000"));
					textView2.setBackgroundColor(Color.parseColor("#00000000"));
					textView3.setBackgroundColor(Color.parseColor("#00000000"));
					textView4.setBackgroundColor(Color.parseColor("#00000000"));
					textView5.setBackgroundColor(Color.parseColor("#00000000"));
					textView6.setBackgroundColor(Color.parseColor("#00000000"));
			//		button.setBackgroundColor(Color.parseColor("#00000000"));
					textView1.setOnTouchListener(buttontouch);
					textView2.setOnTouchListener(buttontouch);
					textView3.setOnTouchListener(buttontouch);
					textView4.setOnTouchListener(buttontouch);
					textView5.setOnTouchListener(buttontouch);
					textView6.setOnTouchListener(buttontouch);
					textView1.setTag(1);
					textView2.setTag(2);
					textView3.setTag(3);
					textView4.setTag(4);
					textView5.setTag(5);
					textView6.setTag(6);
				//	button.setTag(7);
					textView1.setOnClickListener(t);
					textView2.setOnClickListener(t);
					textView3.setOnClickListener(t);
					textView4.setOnClickListener(t);
					textView5.setOnClickListener(t);
					textView6.setOnClickListener(t);
			//		button.setOnClickListener(t);
		/*			if (popupWindow.isShowing()) {
						button3=(Button)view.findViewById(R.id.button4);
						textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
						bsqLiteDatabase.execSQL("delete from h");
					}
					*/
				}
			});
			button3.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					View view=layoutInflater1.inflate(R.layout.restore, null);
					PopupWindow popupWindow=new PopupWindow(view, displayMetrics.widthPixels, LayoutParams.WRAP_CONTENT);
					popupWindow.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));
					popupWindow.setFocusable(true);
					popupWindow.setTouchable(true);
					popupWindow.setOutsideTouchable(true);
					popupWindow.showAtLocation(textView, Gravity.CENTER, 0, 0);
					TextView htextView=(TextView)view.findViewById(R.id.textView1);
					TextView textView1=(TextView)view.findViewById(R.id.textView2);
					htextView.setOnTouchListener(buttontouch);
					textView1.setOnTouchListener(buttontouch);
					htextView.setOnClickListener(new OnClickListener() {

						@Override
						public void onClick(View v) {
							// TODO Auto-generated method stub
							textView.setBackgroundColor(Color.parseColor("#00000000"));
							bsqLiteDatabase.execSQL("delete from j");
						}
					});
					textView1.setOnClickListener(new OnClickListener() {

						@Override
						public void onClick(View v) {
							// TODO Auto-generated method stub
							textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
							bsqLiteDatabase.execSQL("delete from h");
						}
					});
				}
			});
			return false;
		}
		else {
			return super.onKeyDown(keyCode, event);
		}

		}
	class pop implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub

			int key=(Integer)v.getTag();
			switch (key) {
			case 1:
				textView.setBackgroundColor(Color.parseColor("#00CC99"));
				bsqLiteDatabase.execSQL("insert into j values(null,'#00CC99')");
				Toast.makeText(novel.this, "text1", 1).show();
				break;
			case 2:
				textView.setBackgroundColor(Color.parseColor("#99FF99"));
				bsqLiteDatabase.execSQL("insert into j values(null,'#99FF99')");
				Toast.makeText(novel.this, "text2", 1).show();
				break;
			case 3:
				textView.setBackgroundColor(Color.parseColor("#99CCCC"));
				bsqLiteDatabase.execSQL("insert into j values(null,'#99CCCC')");
				Toast.makeText(novel.this, "text3", 1).show();
				break;
			case 4:
				textView.setBackgroundColor(Color.parseColor("#99FFCC"));
				bsqLiteDatabase.execSQL("insert into j values(null,'#99FFCC')");
				Toast.makeText(novel.this, "text4", 1).show();
				break;
			case 5:
				textView.setBackgroundColor(Color.parseColor("#CCCCFF"));
				bsqLiteDatabase.execSQL("insert into j values(null,'#CCCCFF')");
				Toast.makeText(novel.this, "text5", 1).show();
				break;
	//		case 6:
	//			textView.setBackgroundColor(Color.parseColor("#00000000"));
	//			sqLiteDatabase.execSQL("delete from j");
			}
		}

	}
	class set extends SQLiteOpenHelper{

		public set(Context context) {
			super(context, "beijing", null, 1);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub

		}

	}
	class textsize implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			int key=(Integer)v.getTag();
			switch (key) {
			case 1:
				textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
				bsqLiteDatabase.execSQL("insert into h values(null,9)");
				break;
			case 2:
				textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
				bsqLiteDatabase.execSQL("insert into h values(null,12)");
				break;
			case 3:
				textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
				bsqLiteDatabase.execSQL("insert into h values(null,15)");
				break;
			case 4:
				textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
				bsqLiteDatabase.execSQL("insert into h values(null,18)");
				break;
			case 5:
				textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21);
				bsqLiteDatabase.execSQL("insert into h values(null,21)");
				break;
			case 6:
				textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 24);
				bsqLiteDatabase.execSQL("insert into h values(null,24)");
				break;
//          case 7:
//textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
//	sqLiteDatabase.execSQL("delete from h");
//	break;
			}
		}

	}
	@Override
	public void onProgressChanged(SeekBar seekBar, int progress,
			boolean fromUser) {
		// TODO Auto-generated method stub
		progressforpauseInteger=progress;
		float a=(float)progress/100;
		textView999.setText(Float.toString(a)+"%");
	//	textView999.setText(Double.toString(progress/100)+"%");
	}
	@Override
	public void onStartTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub

	}
	@Override
	public void onStopTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub
	//	cursoraCursor=sqLiteDatabase.rawQuery("select * from proeqb where path=?",new String[]{pathString});

count1=0;
		count=0;
	try {
		newyork=bsqLiteDatabase.rawQuery("select * from "+name, null);
		fileInputStreamx = new FileInputStream(pathString);
		File file=new File(pathString);
		Integer cvqm=Math.round(file.length()*progressforpauseInteger/10000);

		fileInputStreamx.skip(cvqm-1);
		q=new byte[10240];
		cv=new String(q, 0, fileInputStreamx.read(q), "GBK");
		textView.setText(cv);
		if (newyork.getCount()==0) {
			bsqLiteDatabase.execSQL("insert into "+name+" values(null,?,0)",new Object[]{cvqm-1});
		}
		else {
			bsqLiteDatabase.execSQL("update "+name+" set pro=?,touch=0 where id=1",new Object[]{cvqm-1});
	//		Toast.makeText(novel.this, "update", Toast.LENGTH_LONG).show();
		}
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	}
	class touch implements OnTouchListener{

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			// TODO Auto-generated method stub
			if (event.getAction()==MotionEvent.ACTION_UP) {
				v.setBackgroundColor(Color.parseColor("#FFFFFF"));
			}
			if (event.getAction()==MotionEvent.ACTION_DOWN) {
				v.setBackgroundColor(Color.parseColor("#0099FF"));
			}
			return false;
		}

	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-13 00:09:06

安卓小说阅读器完整代码的相关文章

《9秒小说阅读器》

<9秒小说阅读器>采用免费开源且跨平台的移动应用开发引擎CrossApp开发,是一款完全开源.免费.跨平台的手机小说下载阅读器,基于最宽松的MIT开源协议,所以开发者可以完全免费.毫无顾虑的使用<9秒小说阅读器>在任何商业行为中,也可直接改名后上线运营,官方会提供每天8小时的免费在线页面问答式服务,每个问题的反馈速度大概在30分钟左右,回复率90%.(可快速导出android版本.ios版本) <9秒小说阅读器>已制作了广告类,开发者只需要申请一个自己的展示广告,更改代

基于Android小说阅读器滑动效果的一种实现

看过小说都知道小说阅读器翻页有好多种效果,比如仿真翻页,滑动翻页,等等.由于某种原因,突然想写一个简单点的滑动翻页效果.在这里写出来也没有什么意图,希望大家可以根据这个效果举一反三,写出其他的效果.图就不上了. 下面是代码:大家理解onTouch事件即可 package com.example.testscroll.view; import android.content.Context; import android.util.AttributeSet; import android.view

Java小项目之:小说阅读器

Java小项目之:小说阅读器 今天带来的java项目是一款阅读器,老少皆宜,适合练手. 代码展示: package com; import javax.swing.JOptionPane; public class Scroll { private int n; private int size; private Thread t; private static int def_speed = 1000; private static int up_speed = -500; private s

小说阅读器

小说阅读器 启动模块bin/start.py 1 import os 2 import sys 3 4 BASE_PATH=os.path.dirname(os.path.dirname(__file__)) 5 sys.path.append(BASE_PATH) 6 7 8 from core import src 9 10 if __name__== '__main__': 11 src.run() 核心代码模块core/src.py 1 from db import db_handler

五款PC端小说阅读器 readbook、非常酷阅读器、iSilo、AlReader、haalireader

        本文主要推荐的是功能强大界面简单电脑(windows系统)单机使用的小说阅读器~以阅读TXT之流的主流类小说文件,只想要会联网会更新可以发评论发微博的朋友可以节省点时间,按ctrl+w吧~觉得想要单机软件的朋友请继续往下看~          这篇博文居然还在有人点击和回复,有点出乎我的意料,当初写这篇文章的本意是因为发现想搜一个简单实用的单机阅读器实在是困难重重,搜索结果总是被各大广告阅读器干扰,千辛万苦终于找到之后觉得应该分享一下以飨同好:虽然时间过去了蛮久,但从回复的朋友来

读取本地HTML的小说阅读器应用源码项目

该源码是一个不错的读取本地HTML的小说阅读器,读取本地HTML的小说阅读器,并且源码也比较简单的,非常适合我们的新手朋友拿来学习,有兴趣的朋友研究下. 源码下载: http://code.662p.com/view/10134.html 详细说明:http://android.662p.com/thread-6191-1-1.html

PDF小说阅读器软件哪个好之轻快PDF阅读器

无论是传统PC端电子书阅读还是手机移动端电子书阅读,都可以找到不少对应的软件.如何选择最适合阅读电子书的PDF阅读器呢,这也正是本期专题要讨论的地方,我们从数十款PDF阅读器当中选择了轻快系列PDF阅读器,并进行了详细的评测,帮助读者更好地了解为什么要选择这样一款阅读工具. 使用平台兼容性 轻快PDF阅读器提供了安卓.苹果和传统PC端软件,也就是说,无论你是手机用户还是PC用户都可以直接使用轻快PDF阅读器,非常省心.这三端在功能上差别并不大,所以我们本次就以PC端作为演示来点评下功能上的优势.

iOS - 小说阅读器分章节,支持正则分章节和按字数分章节

最近做了一个WIFI传书本地阅读功能,有所收获在这里记录下吧. 用户下载的书籍分为两种,一种是有章节格式的,比如 第一章,001章.等,这种可以用正则来直接分章节,还有绝大多数书籍是没有这种格式的,这种如果整本书来直接解析的话,对CPU要求比较大,可能会卡死闪退,所有手动分章节还是很有必要的,这种情况下我们采用按照两千字来分. 话不多说,开始吧. 1.WIFI传书把书传到APP沙盒里,这里我们采用的是 GCDWebServer ,很方便,这里就不做陈述了. 2.将沙盒里面的 .txt 文件转成

安卓小项目【小说阅读器】

1,布局设置,LiearLayout 上中下三部分,其中小说主题内容部分为自定义view,比例是1:8:1 2,创建数据库表  两张表txt表和page表,两张表进行主外键关联 public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) { super(context, "read.db", null, 1); } public DBHelper(Context context, S