一、基本思路
阅读程序源码的书架界面,实际上就是一个自定义的GridView ,然后给相应的控件设置相应的事件就可以了。比如给书籍(item)设置点击和长按事件,导入按钮设置点击事件...
二、自定义GridView
MyGradiView.java
设配器
每一项显示的布局item1.xml
效果图
然后是主布局文件main.xml
效果图
最后在网格视图中添加数据库存储的数据,就可以有书籍的效果了
相关代码
public void getDate() {
SQLiteDatabase db = localbook.getReadableDatabase();
String col[] = { "path" };
Cursor cur = db.query(FinalDate.DATABASE_TABKE, col, "type=1", null, null, null, null);
Cursor cur1 = db.query(FinalDate.DATABASE_TABKE, col, "type=2", null, null, null, null);
Integer num = cur.getCount();
Integer num1 = cur1.getCount();
Log.i("hck", "booklistActivity2 :"+num);
Log.i("hck", "booklistActivity2 :"+num1);
ArrayList<String> arraylist = new ArrayList<String>();
while (cur1.moveToNext()) {
String s = cur1.getString(cur1.getColumnIndex("path"));
arraylist.add(s);
}
while (cur.moveToNext()) {
String s = cur.getString(cur.getColumnIndex("path"));
arraylist.add(s);
}
db.close();
cur.close();
cur1.close();
if (listItem == null)
listItem = new ArrayList<HashMap<String, Object>>();
listItem.clear();
String[] bookids = getResources().getStringArray(R.array.bookid);
String[] booknames = getResources().getStringArray(R.array.bookname);
String[] bookauthors = getResources().getStringArray(R.array.bookauthor);
Map<String, String[]> maps = new HashMap<String, String[]>();
for (int i = 0; i < bookids.length; i++) {
String[] value = new String[2];
value[0] = booknames[i];
value[1] = bookauthors[i];
maps.put(bookids[i], value);
}
for (int i = 0; i < num + num1; i++) {
if (i < num1) {
File file1 = new File(arraylist.get(i));
String m = file1.getName().substring(0, file1.getName().length() - 4);
if (m.length() > 8) {
m = m.substring(0, 8) + "...";
}
String id = arraylist.get(i).substring(arraylist.get(i).lastIndexOf("/") + 1);
String[] array = maps.get(id);
String auther = array != null && array[1] == null ? "未知" : array[1];
String name = array[0] == null ? m : array[0];
map = new HashMap<String, Object>();
if (i == 0) {
map.put("itemback", R.drawable.itemback);
} else if ((i % 2) == 0) {
map.put("itemback", R.drawable.itemback);
}
map.put("ItemImage", map2 != null ? map2.get(file1.getName())[0] : R.drawable.cover);
map.put("BookName", name == null ? m : name);
map.put("ItemTitle1", "作者:" + auther);
map.put("LastImage", "推荐书目");
map.put("path", file1.getPath());
map.put("com", 0 + file1.getName());// 单独用于排序
listItem.add(map);
Log.i("hck","本地"+ listItem.size()+"size");
} else {
map = new HashMap<String, Object>();
File file1 = new File(arraylist.get(i));
String m = file1.getName().substring(0, file1.getName().length() - 4);
if (m.length() > 8) {
m = m.substring(0, 8) + "...";
}
if (i == 0) {
map.put("itemback", R.drawable.itemback);
} else if ((i % 2) == 0) {
map.put("itemback", R.drawable.itemback);
}
map.put("ItemImage", R.drawable.cover);
map.put("BookName", m);
map.put("ItemTitle", m);
map.put("ItemTitle1", "作者:未知");
map.put("LastImage", "本地导入");
map.put("path", file1.getPath());
map.put("com", "1");
listItem.add(map);
}
}
Collections.sort(listItem, new PinyinListComparator());
// if (adapter == null) {
adapter = new ShlefAdapter();
toolbarGrid.setAdapter(adapter);
// }
// adapter.notifyDataSetChanged();
}

最后效果图
阅读程序源码底部的功能是弹出了一个网格菜单,然后在菜单的每一个Item里面实现点击事件就行了,
说明:这些代码基于网上的蝌蚪听书神器改写
声明:本文由云豹科技转发自我可能在扯淡博客,如有侵权请联系作者删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2844962/
,如需转载,请注明出处,否则将追究法律责任。