diff --git a/GLGLServer/.classpath b/GLGLServer/.classpath new file mode 100644 index 0000000..1dd50af --- /dev/null +++ b/GLGLServer/.classpath @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/GLGLServer/.project b/GLGLServer/.project new file mode 100644 index 0000000..4411c68 --- /dev/null +++ b/GLGLServer/.project @@ -0,0 +1,31 @@ + + + GLGLServer + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/GLGLServer/.settings/.jsdtscope b/GLGLServer/.settings/.jsdtscope new file mode 100644 index 0000000..92e666d --- /dev/null +++ b/GLGLServer/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/GLGLServer/.settings/org.eclipse.jdt.core.prefs b/GLGLServer/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/GLGLServer/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/GLGLServer/.settings/org.eclipse.wst.common.component b/GLGLServer/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..829438d --- /dev/null +++ b/GLGLServer/.settings/org.eclipse.wst.common.component @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/GLGLServer/.settings/org.eclipse.wst.common.project.facet.core.xml b/GLGLServer/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..1bf2f3b --- /dev/null +++ b/GLGLServer/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/GLGLServer/.settings/org.eclipse.wst.jsdt.ui.superType.container b/GLGLServer/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/GLGLServer/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/GLGLServer/.settings/org.eclipse.wst.jsdt.ui.superType.name b/GLGLServer/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/GLGLServer/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/GLGLServer/WebContent/META-INF/MANIFEST.MF b/GLGLServer/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/GLGLServer/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/GLGLServer/WebContent/NewFile.jsp b/GLGLServer/WebContent/NewFile.jsp new file mode 100644 index 0000000..7cee4b1 --- /dev/null +++ b/GLGLServer/WebContent/NewFile.jsp @@ -0,0 +1,42 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + +视频教程列表 + + + + + + + + + + + < PARAM NAME="URL" VALUE="D:/fly/GuiLinGL/GLGLServer/WebContent/shipin.mp4"> + + < PARAM NAME="balance" VALUE="0"> + < PARAM NAME="currentPosition" VALUE="0"> + + < PARAM NAME="autoStart" VALUE="1"> + < PARAM NAME="currentMarker" VALUE="0"> + < PARAM NAME="invokeURLs" VALUE="-1"> + < PARAM NAME="baseURL" VALUE=""> + < PARAM NAME="volume" VALUE="50"> + < PARAM NAME="defaultFrame" VALUE=""> + < PARAM NAME="mute" VALUE="0"> + < PARAM NAME="uiMode" VALUE="full"> + < PARAM NAME="stretchToFit" VALUE="0"> + < PARAM NAME="windowlessVideo" VALUE="0"> + < PARAM NAME="enabled" VALUE="-1"> + < PARAM NAME="enableContextMenu" VALUE="-1"> + < PARAM NAME="fullScreen" VALUE="0"> + < PARAM NAME="SAMIStyle" VALUE=""> + < PARAM NAME="SAMILang" VALUE=""> + < PARAM NAME="SAMIFilename" VALUE=""> + < PARAM NAME="captioningID" VALUE=""> + < /OBJECT> + + \ No newline at end of file diff --git a/GLGLServer/WebContent/NewFile1.jsp b/GLGLServer/WebContent/NewFile1.jsp new file mode 100644 index 0000000..eb89b3a --- /dev/null +++ b/GLGLServer/WebContent/NewFile1.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +zwh + + + + + \ No newline at end of file diff --git a/GLGLServer/WebContent/WEB-INF/lib/c3p0-0.9.1.2.jar b/GLGLServer/WebContent/WEB-INF/lib/c3p0-0.9.1.2.jar new file mode 100644 index 0000000..0f42d60 Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/c3p0-0.9.1.2.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/commons-beanutils-1.9.3.jar b/GLGLServer/WebContent/WEB-INF/lib/commons-beanutils-1.9.3.jar new file mode 100644 index 0000000..6728154 Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/commons-beanutils-1.9.3.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/commons-collections-3.2.jar b/GLGLServer/WebContent/WEB-INF/lib/commons-collections-3.2.jar new file mode 100644 index 0000000..75580be Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/commons-collections-3.2.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/commons-dbutils-1.4.jar b/GLGLServer/WebContent/WEB-INF/lib/commons-dbutils-1.4.jar new file mode 100644 index 0000000..7b846ea Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/commons-dbutils-1.4.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/commons-lang-2.3.jar b/GLGLServer/WebContent/WEB-INF/lib/commons-lang-2.3.jar new file mode 100644 index 0000000..c33b353 Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/commons-lang-2.3.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/commons-logging-1.2.jar b/GLGLServer/WebContent/WEB-INF/lib/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/commons-logging-1.2.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/ezmorph-1.0.6.jar b/GLGLServer/WebContent/WEB-INF/lib/ezmorph-1.0.6.jar new file mode 100644 index 0000000..30fad12 Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/ezmorph-1.0.6.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/json-lib-2.4-jdk15.jar b/GLGLServer/WebContent/WEB-INF/lib/json-lib-2.4-jdk15.jar new file mode 100644 index 0000000..68d4f3b Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/json-lib-2.4-jdk15.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/jstl.jar b/GLGLServer/WebContent/WEB-INF/lib/jstl.jar new file mode 100644 index 0000000..a02abec Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/jstl.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/mysql-connector-java-5.1.39-bin.jar b/GLGLServer/WebContent/WEB-INF/lib/mysql-connector-java-5.1.39-bin.jar new file mode 100644 index 0000000..dac6e14 Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/mysql-connector-java-5.1.39-bin.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/lib/standard.jar b/GLGLServer/WebContent/WEB-INF/lib/standard.jar new file mode 100644 index 0000000..bc528ac Binary files /dev/null and b/GLGLServer/WebContent/WEB-INF/lib/standard.jar differ diff --git a/GLGLServer/WebContent/WEB-INF/web.xml b/GLGLServer/WebContent/WEB-INF/web.xml new file mode 100644 index 0000000..803ac1a --- /dev/null +++ b/GLGLServer/WebContent/WEB-INF/web.xml @@ -0,0 +1,92 @@ + + + WXFJavaBeanStarBook + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + + + RegisterServlet + RegisterServlet + com.fly.web.servlet.RegisterServlet + + + RegisterServlet + /register + + + + LoginServlet + LoginServlet + com.fly.web.servlet.LoginServlet + + + LoginServlet + /login + + + + QueryOrderFormServlet + QueryOrderFormServlet + com.fly.web.servlet.QueryOrderFormServlet + + + QueryOrderFormServlet + /queryOrderForm + + + + GetShouYeData + GetShouYeData + com.fly.web.servlet.GetShouYeData + + + GetShouYeData + /getShouYeData + + + + HistoryServlet + HistoryServlet + com.fly.web.servlet.HistoryServlet + + + HistoryServlet + /history + + + + DeleteHistoryServlet + DeleteHistoryServlet + com.fly.web.servlet.DeleteHistoryServlet + + + DeleteHistoryServlet + /deleteHistory + + + + GetHistoryServlet + GetHistoryServlet + com.fly.web.servlet.GetHistoryServlet + + + GetHistoryServlet + /getHistory + + + + UpdatePwdServlet + UpdatePwdServlet + com.fly.web.servlet.UpdatePwdServlet + + + UpdatePwdServlet + /updatePwd + + \ No newline at end of file diff --git a/GLGLServer/WebContent/video/shipin.mp4 b/GLGLServer/WebContent/video/shipin.mp4 new file mode 100644 index 0000000..9e571b3 Binary files /dev/null and b/GLGLServer/WebContent/video/shipin.mp4 differ diff --git a/GLGLServer/build/classes/c3p0.properties b/GLGLServer/build/classes/c3p0.properties new file mode 100644 index 0000000..1c1c05b --- /dev/null +++ b/GLGLServer/build/classes/c3p0.properties @@ -0,0 +1,4 @@ +c3p0.driverClass=com.mysql.jdbc.Driver +c3p0.jdbcUrl=jdbc:mysql:///glgl +c3p0.user=root +c3p0.password=root diff --git a/GLGLServer/build/classes/com/fly/dao/DeleteDao.class b/GLGLServer/build/classes/com/fly/dao/DeleteDao.class new file mode 100644 index 0000000..e842871 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/dao/DeleteDao.class differ diff --git a/GLGLServer/build/classes/com/fly/dao/HistoryDao.class b/GLGLServer/build/classes/com/fly/dao/HistoryDao.class new file mode 100644 index 0000000..a48a3c2 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/dao/HistoryDao.class differ diff --git a/GLGLServer/build/classes/com/fly/dao/LoginDao.class b/GLGLServer/build/classes/com/fly/dao/LoginDao.class new file mode 100644 index 0000000..256d8ef Binary files /dev/null and b/GLGLServer/build/classes/com/fly/dao/LoginDao.class differ diff --git a/GLGLServer/build/classes/com/fly/dao/QueryOrderFormDao.class b/GLGLServer/build/classes/com/fly/dao/QueryOrderFormDao.class new file mode 100644 index 0000000..183cfb3 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/dao/QueryOrderFormDao.class differ diff --git a/GLGLServer/build/classes/com/fly/dao/RegisterDao.class b/GLGLServer/build/classes/com/fly/dao/RegisterDao.class new file mode 100644 index 0000000..72ecba3 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/dao/RegisterDao.class differ diff --git a/GLGLServer/build/classes/com/fly/dao/ShouYeDao.class b/GLGLServer/build/classes/com/fly/dao/ShouYeDao.class new file mode 100644 index 0000000..fec8225 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/dao/ShouYeDao.class differ diff --git a/GLGLServer/build/classes/com/fly/domain/History.class b/GLGLServer/build/classes/com/fly/domain/History.class new file mode 100644 index 0000000..388373a Binary files /dev/null and b/GLGLServer/build/classes/com/fly/domain/History.class differ diff --git a/GLGLServer/build/classes/com/fly/domain/OrderForm.class b/GLGLServer/build/classes/com/fly/domain/OrderForm.class new file mode 100644 index 0000000..db12fce Binary files /dev/null and b/GLGLServer/build/classes/com/fly/domain/OrderForm.class differ diff --git a/GLGLServer/build/classes/com/fly/domain/ShouYe.class b/GLGLServer/build/classes/com/fly/domain/ShouYe.class new file mode 100644 index 0000000..8a6d2c3 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/domain/ShouYe.class differ diff --git a/GLGLServer/build/classes/com/fly/domain/User.class b/GLGLServer/build/classes/com/fly/domain/User.class new file mode 100644 index 0000000..312638c Binary files /dev/null and b/GLGLServer/build/classes/com/fly/domain/User.class differ diff --git a/GLGLServer/build/classes/com/fly/service/HistoryService.class b/GLGLServer/build/classes/com/fly/service/HistoryService.class new file mode 100644 index 0000000..1a2ae11 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/service/HistoryService.class differ diff --git a/GLGLServer/build/classes/com/fly/service/LoginService.class b/GLGLServer/build/classes/com/fly/service/LoginService.class new file mode 100644 index 0000000..b8a37a1 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/service/LoginService.class differ diff --git a/GLGLServer/build/classes/com/fly/service/QueryOrderFormService.class b/GLGLServer/build/classes/com/fly/service/QueryOrderFormService.class new file mode 100644 index 0000000..e261e4f Binary files /dev/null and b/GLGLServer/build/classes/com/fly/service/QueryOrderFormService.class differ diff --git a/GLGLServer/build/classes/com/fly/service/RegisterService.class b/GLGLServer/build/classes/com/fly/service/RegisterService.class new file mode 100644 index 0000000..3a16831 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/service/RegisterService.class differ diff --git a/GLGLServer/build/classes/com/fly/service/ShouYeService.class b/GLGLServer/build/classes/com/fly/service/ShouYeService.class new file mode 100644 index 0000000..682425f Binary files /dev/null and b/GLGLServer/build/classes/com/fly/service/ShouYeService.class differ diff --git a/GLGLServer/build/classes/com/fly/utils/DataSourceUtils.class b/GLGLServer/build/classes/com/fly/utils/DataSourceUtils.class new file mode 100644 index 0000000..70f7ea5 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/utils/DataSourceUtils.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/DeleteHistoryServlet.class b/GLGLServer/build/classes/com/fly/web/servlet/DeleteHistoryServlet.class new file mode 100644 index 0000000..e6b9a5d Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/DeleteHistoryServlet.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/GetHistoryServlet.class b/GLGLServer/build/classes/com/fly/web/servlet/GetHistoryServlet.class new file mode 100644 index 0000000..8a8dd39 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/GetHistoryServlet.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/GetShouYeData.class b/GLGLServer/build/classes/com/fly/web/servlet/GetShouYeData.class new file mode 100644 index 0000000..9ffd93a Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/GetShouYeData.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/HistoryServlet.class b/GLGLServer/build/classes/com/fly/web/servlet/HistoryServlet.class new file mode 100644 index 0000000..0765645 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/HistoryServlet.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/LoginServlet.class b/GLGLServer/build/classes/com/fly/web/servlet/LoginServlet.class new file mode 100644 index 0000000..d29bae3 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/LoginServlet.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/RegisterServlet.class b/GLGLServer/build/classes/com/fly/web/servlet/RegisterServlet.class new file mode 100644 index 0000000..1044fea Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/RegisterServlet.class differ diff --git a/GLGLServer/build/classes/com/fly/web/servlet/UpdatePwdServlet.class b/GLGLServer/build/classes/com/fly/web/servlet/UpdatePwdServlet.class new file mode 100644 index 0000000..767b4d1 Binary files /dev/null and b/GLGLServer/build/classes/com/fly/web/servlet/UpdatePwdServlet.class differ diff --git a/GLGLServer/build/classes/sql.txt b/GLGLServer/build/classes/sql.txt new file mode 100644 index 0000000..cbce5f5 --- /dev/null +++ b/GLGLServer/build/classes/sql.txt @@ -0,0 +1,44 @@ +sql语句 + +create database glgl; + +use glgl; + +create database glgl; + +create table user( +logname char(20) not null, +password char(20), +primary key (logname) +); + +create table history( +uniquekey char(30) not null, +url char(50), +title char(20), +leibie char(20), +imageurl char(100), +time char(20), +account char(20), +primary key (uniquekey) +); + +create table shouye( +uniquekey char(30) not null, +url char(50), +title char(20), +leibie char(20), +imageurl char(100), +primary key (uniquekey) +); + + + + + + + + + + + diff --git a/GLGLServer/glgl.sql b/GLGLServer/glgl.sql new file mode 100644 index 0000000..64f2fc8 --- /dev/null +++ b/GLGLServer/glgl.sql @@ -0,0 +1,69 @@ +/* +SQLyog Enterprise - MySQL GUI v6.14 +MySQL - 5.5.49 : Database - glgl +********************************************************************* +*/ + +/*!40101 SET NAMES utf8 */; + +/*!40101 SET SQL_MODE=''*/; + +create database if not exists `glgl`; + +USE `glgl`; + +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + +/*Table structure for table `history` */ + +DROP TABLE IF EXISTS `history`; + +CREATE TABLE `history` ( + `uniquekey` char(50) NOT NULL, + `url` char(100) DEFAULT NULL, + `title` char(100) DEFAULT NULL, + `leibie` char(20) DEFAULT NULL, + `imageurl` char(150) DEFAULT NULL, + `time` char(20) DEFAULT NULL, + `account` char(20) DEFAULT NULL, + PRIMARY KEY (`uniquekey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +/*Data for the table `history` */ + +insert into `history`(`uniquekey`,`url`,`title`,`leibie`,`imageurl`,`time`,`account`) values ('jiaotong02','https://m.mafengwo.cn/gl/catalog/index?id=289&catalog_id=957','出租车','交通住宿','https://img1.qunarzz.com/travel/d8/1703/30/42823b7086545bb5.jpg_r_326x190x70_3a66727c.jpg','2019-05-08 22:28:43','fly'),('xingcheng02','https://touch.go.qunar.com/feature/14257','让时光漫步,醉心山水五日游','行程推荐','https://img1.qunarzz.com/travel/d8/1703/30/42823b7086545bb5.jpg_r_326x190x70_3a66727c.jpg','2019-05-08 22:28:51','fly'); + +/*Table structure for table `shouye` */ + +DROP TABLE IF EXISTS `shouye`; + +CREATE TABLE `shouye` ( + `uniquekey` char(30) NOT NULL, + `url` char(50) DEFAULT NULL, + `title` char(20) DEFAULT NULL, + `leibie` char(20) DEFAULT NULL, + `imageurl` char(100) DEFAULT NULL, + PRIMARY KEY (`uniquekey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +/*Data for the table `shouye` */ + +insert into `shouye`(`uniquekey`,`url`,`title`,`leibie`,`imageurl`) values ('001','www',NULL,'www','www'),('002','www','www','www','www'),('003','www','www','www','www'),('004','www','www','www','www'),('005','www','www','www','www'); + +/*Table structure for table `user` */ + +DROP TABLE IF EXISTS `user`; + +CREATE TABLE `user` ( + `logname` char(20) NOT NULL, + `password` char(100) DEFAULT NULL, + PRIMARY KEY (`logname`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +/*Data for the table `user` */ + +insert into `user`(`logname`,`password`) values ('fly','d0970714757783e6cf17b26fb8e2298f'); + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; diff --git a/GLGLServer/src/c3p0.properties b/GLGLServer/src/c3p0.properties new file mode 100644 index 0000000..1c1c05b --- /dev/null +++ b/GLGLServer/src/c3p0.properties @@ -0,0 +1,4 @@ +c3p0.driverClass=com.mysql.jdbc.Driver +c3p0.jdbcUrl=jdbc:mysql:///glgl +c3p0.user=root +c3p0.password=root diff --git a/GLGLServer/src/com/fly/dao/DeleteDao.java b/GLGLServer/src/com/fly/dao/DeleteDao.java new file mode 100644 index 0000000..0c62c15 --- /dev/null +++ b/GLGLServer/src/com/fly/dao/DeleteDao.java @@ -0,0 +1,18 @@ +package com.fly.dao; + +import java.sql.SQLException; + +import org.apache.commons.dbutils.QueryRunner; +import com.fly.utils.DataSourceUtils; + +public class DeleteDao { + + public static void deleteOrderForm(int number) throws SQLException { + // 创建queryrunner + QueryRunner qr = new QueryRunner(); + // 编写sql + String sql = "delete from orderform where orderNumber = ?"; + // 执行sql + qr.update(DataSourceUtils.getConnection(), sql, number); + } +} diff --git a/GLGLServer/src/com/fly/dao/HistoryDao.java b/GLGLServer/src/com/fly/dao/HistoryDao.java new file mode 100644 index 0000000..2a13b4d --- /dev/null +++ b/GLGLServer/src/com/fly/dao/HistoryDao.java @@ -0,0 +1,46 @@ +package com.fly.dao; + +import java.sql.SQLException; +import java.util.List; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanListHandler; + +import com.fly.domain.History; +import com.fly.domain.ShouYe; +import com.fly.utils.DataSourceUtils; + +public class HistoryDao { + + public void historyAdd(String account, String uniquekey, String url, String title, String leibie, String imageurl, + String time) throws SQLException { + + System.out.println("HistoryDao:" + account + "--" + uniquekey + "--" + url + "--" + title + "--" + leibie + + "---" + imageurl + "---" + time); + // 创建queryrunner + QueryRunner qr = new QueryRunner(); + // 编写sql + String sql = "insert into history values(?,?,?,?,?,?,?);"; + // 执行sql + int update = qr.update(DataSourceUtils.getConnection(), sql, uniquekey, url, title, leibie, imageurl, time, + account); + } + + public void historyDeleteByAccount(String account) throws SQLException { + // 创建queryrunner + QueryRunner qr = new QueryRunner(); + // 编写sql + String sql = "delete from history where account = ?;"; + qr.update(DataSourceUtils.getConnection(), sql, account); + } + + public List historyQueryAllByAccount(String account) throws SQLException { + // 创建queryrunner + QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select * from history where account = ?;"; + // String sql = "select * from history;"; + List list = qr.query(sql, account, new BeanListHandler<>(History.class)); + return list; + } + +} diff --git a/GLGLServer/src/com/fly/dao/LoginDao.java b/GLGLServer/src/com/fly/dao/LoginDao.java new file mode 100644 index 0000000..bed910e --- /dev/null +++ b/GLGLServer/src/com/fly/dao/LoginDao.java @@ -0,0 +1,22 @@ +package com.fly.dao; + +import java.sql.SQLException; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanHandler; + +import com.fly.domain.User; +import com.fly.utils.DataSourceUtils; + +public class LoginDao { + + public User registerLogin(String logname, String password) throws SQLException { + // 创建queryrunner + QueryRunner qr = new QueryRunner(); + // 编写sql + String sql = "select * from user where logname = ? and password = ?"; + // 执行sql + return qr.query(DataSourceUtils.getConnection(), sql, new BeanHandler<>(User.class), logname, password); + } + +} diff --git a/GLGLServer/src/com/fly/dao/QueryOrderFormDao.java b/GLGLServer/src/com/fly/dao/QueryOrderFormDao.java new file mode 100644 index 0000000..42a7761 --- /dev/null +++ b/GLGLServer/src/com/fly/dao/QueryOrderFormDao.java @@ -0,0 +1,27 @@ +package com.fly.dao; + +import java.sql.SQLException; +import java.util.List; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanHandler; +import org.apache.commons.dbutils.handlers.BeanListHandler; +import org.junit.Test; + +import com.fly.domain.OrderForm; +import com.fly.utils.DataSourceUtils; +import com.sun.org.apache.xpath.internal.operations.Or; + +public class QueryOrderFormDao { + + @Test + public List queryOrder(String logname) throws SQLException { + QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); + // 编写sql + String sql = "select * from orderform where logname = ?"; + // 执行sql + List list = qr.query(sql, new BeanListHandler<>(OrderForm.class), logname); + return list; + } + +} diff --git a/GLGLServer/src/com/fly/dao/RegisterDao.java b/GLGLServer/src/com/fly/dao/RegisterDao.java new file mode 100644 index 0000000..e77a477 --- /dev/null +++ b/GLGLServer/src/com/fly/dao/RegisterDao.java @@ -0,0 +1,33 @@ +package com.fly.dao; + +import java.sql.SQLException; + +import org.apache.commons.dbutils.QueryRunner; +import org.junit.Test; + +import com.fly.utils.DataSourceUtils; + +public class RegisterDao { + + // 添加注册 + public void registerAdd(String logname, String password) throws SQLException { + // 创建queryrunner + QueryRunner qr = new QueryRunner(); + // 编写sql + String sql = "insert into user values(?,?);"; + // 执行sql + int update = qr.update(DataSourceUtils.getConnection(), sql, logname, password); + + } + + //更改密码 + public void updatePwd(String logname, String newPwd) throws SQLException { + // 创建queryrunner + QueryRunner qr = new QueryRunner(); + // 编写sql + String sql = "update user set password = ? where logname = ?;"; + // 执行sql + int update = qr.update(DataSourceUtils.getConnection(), sql, newPwd, logname); + } + +} diff --git a/GLGLServer/src/com/fly/dao/ShouYeDao.java b/GLGLServer/src/com/fly/dao/ShouYeDao.java new file mode 100644 index 0000000..bc25a9d --- /dev/null +++ b/GLGLServer/src/com/fly/dao/ShouYeDao.java @@ -0,0 +1,30 @@ +package com.fly.dao; + +import java.sql.SQLException; +import java.util.List; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanListHandler; + +import com.fly.domain.ShouYe; +import com.fly.utils.DataSourceUtils; + +public class ShouYeDao { + + + /** + * 查询所有数据 + * + * @throws Exception + */ + public static List allShou() throws Exception { + + QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select * from shouye"; + List list = qr.query(sql, new BeanListHandler<>(ShouYe.class)); +// for (ShouYe bean : list) { +// System.out.println("----allStu----" + bean); +// } + return list; + } +} diff --git a/GLGLServer/src/com/fly/domain/History.java b/GLGLServer/src/com/fly/domain/History.java new file mode 100644 index 0000000..4a51c1c --- /dev/null +++ b/GLGLServer/src/com/fly/domain/History.java @@ -0,0 +1,74 @@ +package com.fly.domain; + +public class History { + + private String account; + private String uniquekey; + private String url; + private String title; + private String leibie; + private String imageurl; + private String time; + + public String getImageurl() { + return imageurl; + } + + public String getTime() { + return time; + } + + public void setImageurl(String imageurl) { + this.imageurl = imageurl; + } + + public void setTime(String time) { + this.time = time; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getUniquekey() { + return uniquekey; + } + + public void setUniquekey(String uniquekey) { + this.uniquekey = uniquekey; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getLeibie() { + return leibie; + } + + public void setLeibie(String leibie) { + this.leibie = leibie; + } + + @Override + public String toString() { + // TODO Auto-generated method stub + return title + "--" + leibie + "--" + account; + } +} diff --git a/GLGLServer/src/com/fly/domain/OrderForm.java b/GLGLServer/src/com/fly/domain/OrderForm.java new file mode 100644 index 0000000..2e1537c --- /dev/null +++ b/GLGLServer/src/com/fly/domain/OrderForm.java @@ -0,0 +1,41 @@ +package com.fly.domain; + +public class OrderForm { + + private int orderNumber; + private String logname; + private String ordermess; + private float sum; + + public void setSum(float sum) { + this.sum = sum; + } + + public float getSum() { + return sum; + } + + public void setLogname(String logname) { + this.logname = logname; + } + + public void setOrdermess(String ordermess) { + this.ordermess = ordermess; + } + + public void setOrderNumber(int orderNumber) { + this.orderNumber = orderNumber; + } + + public String getLogname() { + return logname; + } + + public String getOrdermess() { + return ordermess; + } + + public int getOrderNumber() { + return orderNumber; + } +} diff --git a/GLGLServer/src/com/fly/domain/ShouYe.java b/GLGLServer/src/com/fly/domain/ShouYe.java new file mode 100644 index 0000000..170e43b --- /dev/null +++ b/GLGLServer/src/com/fly/domain/ShouYe.java @@ -0,0 +1,49 @@ +package com.fly.domain; + +public class ShouYe { + + private String imageurl; + private String leibie; + private String title; + private String uniquekey; + private String url; + + public String getImageurl() { + return imageurl; + } + public void setImageurl(String imageurl) { + this.imageurl = imageurl; + } + public String getLeibie() { + return leibie; + } + public void setLeibie(String leibie) { + this.leibie = leibie; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getUniquekey() { + return uniquekey; + } + public void setUniquekey(String uniquekey) { + this.uniquekey = uniquekey; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + + + @Override + public String toString() { + // TODO Auto-generated method stub + return imageurl+"--"+title+"--"+url+"--"+leibie+"--"+uniquekey; + } + +} diff --git a/GLGLServer/src/com/fly/domain/User.java b/GLGLServer/src/com/fly/domain/User.java new file mode 100644 index 0000000..8b79288 --- /dev/null +++ b/GLGLServer/src/com/fly/domain/User.java @@ -0,0 +1,23 @@ +package com.fly.domain; + +public class User { + + private String logname; + private String password; + + public void setLogname(String logname) { + this.logname = logname; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getLogname() { + return logname; + } + + public String getPassword() { + return password; + } +} diff --git a/GLGLServer/src/com/fly/service/HistoryService.java b/GLGLServer/src/com/fly/service/HistoryService.java new file mode 100644 index 0000000..d0e6266 --- /dev/null +++ b/GLGLServer/src/com/fly/service/HistoryService.java @@ -0,0 +1,28 @@ +package com.fly.service; + +import java.sql.SQLException; +import java.util.List; + +import com.fly.dao.HistoryDao; +import com.fly.domain.History; + +public class HistoryService { + + HistoryDao dao = new HistoryDao(); + + public void add(String account, String uniquekey, String url, String title, String leibie, String imageurl, + String time) throws SQLException { + dao.historyAdd(account, uniquekey, url, title, leibie, imageurl, time); + System.out.println("HistoryService:" + account + "--" + uniquekey + "--" + url + "--" + title + "--" + leibie); + } + + public void deleteByAccount(String account) throws SQLException { + dao.historyDeleteByAccount(account); + } + + public List queryAllByAccount(String account) throws SQLException { + // TODO Auto-generated method stub + return dao.historyQueryAllByAccount(account); + } + +} diff --git a/GLGLServer/src/com/fly/service/LoginService.java b/GLGLServer/src/com/fly/service/LoginService.java new file mode 100644 index 0000000..b0a7c0a --- /dev/null +++ b/GLGLServer/src/com/fly/service/LoginService.java @@ -0,0 +1,16 @@ +package com.fly.service; + +import java.sql.SQLException; + +import com.fly.dao.LoginDao; +import com.fly.domain.User; + +public class LoginService { + + LoginDao dao = new LoginDao(); + + public User login(String logname, String password) throws SQLException { + return dao.registerLogin(logname, password); + } + +} diff --git a/GLGLServer/src/com/fly/service/QueryOrderFormService.java b/GLGLServer/src/com/fly/service/QueryOrderFormService.java new file mode 100644 index 0000000..d8a7573 --- /dev/null +++ b/GLGLServer/src/com/fly/service/QueryOrderFormService.java @@ -0,0 +1,18 @@ +package com.fly.service; + +import java.sql.SQLException; +import java.util.List; + +import com.fly.dao.QueryOrderFormDao; +import com.fly.domain.OrderForm; + +public class QueryOrderFormService { + + QueryOrderFormDao dao = new QueryOrderFormDao(); + + public List queryOrder(String logname) throws SQLException { + List queryOrder = dao.queryOrder(logname); + return queryOrder; + } + +} diff --git a/GLGLServer/src/com/fly/service/RegisterService.java b/GLGLServer/src/com/fly/service/RegisterService.java new file mode 100644 index 0000000..3ae03b8 --- /dev/null +++ b/GLGLServer/src/com/fly/service/RegisterService.java @@ -0,0 +1,20 @@ +package com.fly.service; + +import java.sql.SQLException; + +import com.fly.dao.RegisterDao; + +public class RegisterService { + + RegisterDao dao = new RegisterDao(); + + public void register(String logname, String password) + throws SQLException { + dao.registerAdd(logname, password); + } + + public void updatePwd(String account, String pwd) throws SQLException { + dao.updatePwd(account,pwd); + } + +} diff --git a/GLGLServer/src/com/fly/service/ShouYeService.java b/GLGLServer/src/com/fly/service/ShouYeService.java new file mode 100644 index 0000000..e8b3650 --- /dev/null +++ b/GLGLServer/src/com/fly/service/ShouYeService.java @@ -0,0 +1,16 @@ +package com.fly.service; + +import java.util.List; + +import com.fly.dao.ShouYeDao; +import com.fly.domain.ShouYe; + +public class ShouYeService { + + ShouYeDao dao = new ShouYeDao(); + + public List shouYe() throws Exception { + return dao.allShou(); + } + +} diff --git a/GLGLServer/src/com/fly/utils/DataSourceUtils.java b/GLGLServer/src/com/fly/utils/DataSourceUtils.java new file mode 100644 index 0000000..d75bb9c --- /dev/null +++ b/GLGLServer/src/com/fly/utils/DataSourceUtils.java @@ -0,0 +1,148 @@ +package com.fly.utils; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import javax.sql.DataSource; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class DataSourceUtils { + private static ComboPooledDataSource ds = new ComboPooledDataSource(); + private static ThreadLocal tl = new ThreadLocal<>(); + + /** + * 获取数据源 + * @return + */ + public static DataSource getDataSource(){ + return ds; + } + + /** + * 从当前线程上获取连接 + * @return + * @throws SQLException + */ + public static Connection getConnection() throws SQLException{ + Connection conn = null; + if (conn == null) { + //第一次获取 创建一个连接 和当前的线程绑定 + conn = ds.getConnection(); + //绑定 + tl.set(conn); + } + return conn; + } + + /** + * 释放资源 + * @param conn + * @param st + * @param rs + */ + public static void closeResource(Connection conn,Statement st,ResultSet rs){ + closeResource(st, rs); + closeConn(conn); + } + + public static void closeResource(Statement st, ResultSet rs) { + closeResultSet(rs); + closeStatement(st); + } + + /** + * 释放连接 + * @param conn + */ + public static void closeConn(Connection conn) { + if(conn != null){ + try { + conn.close(); + //和当前的线程解绑 + tl.remove(); + } catch (SQLException e) { + e.printStackTrace(); + } + conn =null; + } + } + + /** + * 释放语句执行者 + * @param st + */ + public static void closeStatement(Statement st) { + if (st != null) { + try { + st.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + st = null; + } + } + + /** + * 释放结果集 + * @param rs + */ + public static void closeResultSet(ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + rs = null; + } + } + + /** + * 开启事物 + * @throws SQLException + */ + public static void startTransaction() throws SQLException{ + //获取连接 开启事物 + getConnection().setAutoCommit(false); + } + + /** + * 事务提交 + */ + public static void commitAndClose(){ + try { + //获取连接 + Connection conn = getConnection(); + //提交事物 + conn.commit(); + //释放资源 + conn.close(); + //接触绑定 + tl.remove(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * 事务回滚 + */ + public static void rollbackAndClose(){ + try { + //获取连接 + Connection conn = getConnection(); + //事务回滚 + conn.rollback(); + //释放资源 + conn.close(); + //解除绑定 + tl.remove(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/DeleteHistoryServlet.java b/GLGLServer/src/com/fly/web/servlet/DeleteHistoryServlet.java new file mode 100644 index 0000000..18d0601 --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/DeleteHistoryServlet.java @@ -0,0 +1,46 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.fly.service.HistoryService; + +/** + * 根据用户清空History + */ +public class DeleteHistoryServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置编码 + request.setCharacterEncoding("utf-8"); + response.setContentType("text/html;charset=utf-8"); + PrintWriter out = response.getWriter(); + + String account = request.getParameter("account"); + + String mess; + try { + new HistoryService().deleteByAccount(account); + mess = account + "服务器删除成功"; + } catch (SQLException e) { + e.printStackTrace(); + mess = account + "服务器删除失败"; + } + + // 输出数据 + out.println(mess); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/GetHistoryServlet.java b/GLGLServer/src/com/fly/web/servlet/GetHistoryServlet.java new file mode 100644 index 0000000..b0256c5 --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/GetHistoryServlet.java @@ -0,0 +1,72 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.fly.domain.History; +import com.fly.domain.ShouYe; +import com.fly.service.HistoryService; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * 获取数据库中的历史记录转换成json + */ +public class GetHistoryServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置编码 + request.setCharacterEncoding("utf-8"); + response.setContentType("text/json;charset=utf-8"); + PrintWriter out = response.getWriter(); + + String account = request.getParameter("account"); + // String account = "fly"; + try { + List list = new HistoryService().queryAllByAccount(account); + + JSONObject jsonobj1 = new JSONObject(); + jsonobj1.put("error_code", 0); + jsonobj1.put("reason", "成功的返回"); + + JSONObject jsonobj2 = new JSONObject(); + JSONArray jsonarray1 = new JSONArray(); + + JSONObject jsonobj3 = new JSONObject(); + for (History s : list) { + jsonobj3.put("account", s.getAccount()); + jsonobj3.put("leibie", s.getLeibie()); + jsonobj3.put("title", s.getTitle()); + jsonobj3.put("uniquekey", s.getUniquekey()); + jsonobj3.put("url", s.getUrl()); + jsonobj3.put("imageurl", s.getImageurl()); + jsonobj3.put("time", s.getTime()); + jsonarray1.add(jsonobj3); + } + + jsonobj2.put("data", jsonarray1); + + jsonobj1.put("result", jsonobj2); + + out.println(jsonobj1); + } catch (SQLException e) { + e.printStackTrace(); + out.println("服务器获取历史失败"); + } + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/GetShouYeData.java b/GLGLServer/src/com/fly/web/servlet/GetShouYeData.java new file mode 100644 index 0000000..78a1292 --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/GetShouYeData.java @@ -0,0 +1,79 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.fly.dao.ShouYeDao; +import com.fly.domain.ShouYe; +import com.fly.service.ShouYeService; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * 生成首页滑动数据 + */ +public class GetShouYeData extends HttpServlet { + private static final long serialVersionUID = 1L; + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置响应内容类型 + // 设置响应内容类型 + response.setContentType("text/json; charset=utf-8"); + PrintWriter out = response.getWriter(); + try { + List list = new ShouYeService().shouYe(); + // for (ShouYe bean : list) { + // System.out.println("----allStu----" + bean); + // } + // JSONArray jsonarray = new JSONArray(); + // JSONObject jsonobj = new JSONObject(); + // for (ShouYe s : list) { + // jsonobj.put("imageurl", s.getImageurl()); + // jsonobj.put("leibie", s.getLeibie()); + // jsonobj.put("title", s.getTitle()); + // jsonobj.put("uniquekey", s.getUniquekey()); + // jsonobj.put("url", s.getUrl()); + // jsonarray.add(jsonobj); + // } + + JSONObject jsonobj1 = new JSONObject(); + jsonobj1.put("error_code", 0); + jsonobj1.put("reason", "成功的返回"); + + JSONObject jsonobj2 = new JSONObject(); + JSONArray jsonarray1 = new JSONArray(); + + JSONObject jsonobj3 = new JSONObject(); + for (ShouYe s : list) { + jsonobj3.put("imageurl", s.getImageurl()); + jsonobj3.put("leibie", s.getLeibie()); + jsonobj3.put("title", s.getTitle()); + jsonobj3.put("uniquekey", s.getUniquekey()); + jsonobj3.put("url", s.getUrl()); + jsonarray1.add(jsonobj3); + } + + jsonobj2.put("data", jsonarray1); + + jsonobj1.put("result", jsonobj2); + + out.println(jsonobj1); + } catch (Exception e) { + e.printStackTrace(); + } + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/HistoryServlet.java b/GLGLServer/src/com/fly/web/servlet/HistoryServlet.java new file mode 100644 index 0000000..4cb387c --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/HistoryServlet.java @@ -0,0 +1,61 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.fly.service.HistoryService; +import com.fly.service.RegisterService; + +/** + * 保存浏览历史 + */ +public class HistoryServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置编码 + request.setCharacterEncoding("utf-8"); + response.setContentType("text/html;charset=utf-8"); + PrintWriter out = response.getWriter(); + + //// mAccount,mUniquekey, mUrl, mTitle,mLeiBie + String account = request.getParameter("account"); + String uniquekey = request.getParameter("uniquekey"); + String url = request.getParameter("url"); + String title = request.getParameter("title"); + String leibie = request.getParameter("leibie"); + String imageurl = request.getParameter("imageurl"); + String time = request.getParameter("time"); + String mess; + + // String account = "account"; + // String uniquekey = "uniquekey"; + // String url = "url"; + // String title = "title"; + // String leibie = "leibie"; + + try { + new HistoryService().add(account, uniquekey, url, title, leibie, imageurl, time); + mess = account + "服务器历史成功"; + } catch (Exception e) { + e.printStackTrace(); + mess = "服务器历史失败"; + } + + // 输出数据 + out.println(mess); + + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/LoginServlet.java b/GLGLServer/src/com/fly/web/servlet/LoginServlet.java new file mode 100644 index 0000000..bbffcd8 --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/LoginServlet.java @@ -0,0 +1,58 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.fly.domain.User; +import com.fly.service.LoginService; +import com.fly.service.RegisterService; + +/** + * 登陆 + */ +public class LoginServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置编码 + request.setCharacterEncoding("utf-8"); + response.setContentType("text/html;charset=utf-8"); + PrintWriter out = response.getWriter(); + String account = request.getParameter("account"); + String pwd = request.getParameter("pwd"); + System.out.println("账户:" + account); + System.out.println("密码:" + pwd); + User user = null; + String mess; + try { + user = new LoginService().login(account, pwd); + if (user == null) { + mess = "登陆失败"; + } else { + mess = account + "登陆成功"; + } + + } catch (SQLException e) { + e.printStackTrace(); + mess = "登陆失败"; + } + // 输出数据 + out.println(mess); + + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/RegisterServlet.java b/GLGLServer/src/com/fly/web/servlet/RegisterServlet.java new file mode 100644 index 0000000..0ec2f38 --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/RegisterServlet.java @@ -0,0 +1,53 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.fly.service.RegisterService; + +/** + * 注册页面 + */ +public class RegisterServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置编码 + request.setCharacterEncoding("utf-8"); + response.setContentType("text/html;charset=utf-8"); + + // 设置响应内容类型 + // 设置响应内容类型 + PrintWriter out = response.getWriter(); + + // 接收参数 + String account = request.getParameter("account"); + String pwd = request.getParameter("pwd"); + + System.out.println("Register---" + account); + System.out.println("Register---" + pwd); + String mess; + try { + new RegisterService().register(account, pwd); + mess = account + "注册成功"; + } catch (SQLException e) { + e.printStackTrace(); + mess = "用户名已经被注册"; + } + + // 输出数据 + out.println(mess); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } + +} diff --git a/GLGLServer/src/com/fly/web/servlet/UpdatePwdServlet.java b/GLGLServer/src/com/fly/web/servlet/UpdatePwdServlet.java new file mode 100644 index 0000000..100a23e --- /dev/null +++ b/GLGLServer/src/com/fly/web/servlet/UpdatePwdServlet.java @@ -0,0 +1,53 @@ +package com.fly.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.fly.service.RegisterService; + +/** + * 更新密码 + */ +public class UpdatePwdServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // 设置编码 + request.setCharacterEncoding("utf-8"); + response.setContentType("text/html;charset=utf-8"); + // 设置响应内容类型 + // 设置响应内容类型 + PrintWriter out = response.getWriter(); + + // 接收参数 + String account = request.getParameter("account"); + String pwd = request.getParameter("pwd"); + + System.out.println("需要修改密码的账户---" + account); + System.out.println("新的密码---" + pwd); + String mess; + try { + new RegisterService().updatePwd(account, pwd); + mess = "successful"; + } catch (SQLException e) { + e.printStackTrace(); + mess = "error"; + } + + // 输出数据 + out.println(mess); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // TODO Auto-generated method stub + doGet(request, response); + } + +} diff --git a/GLGLServer/src/sql.txt b/GLGLServer/src/sql.txt new file mode 100644 index 0000000..cbce5f5 --- /dev/null +++ b/GLGLServer/src/sql.txt @@ -0,0 +1,44 @@ +sql语句 + +create database glgl; + +use glgl; + +create database glgl; + +create table user( +logname char(20) not null, +password char(20), +primary key (logname) +); + +create table history( +uniquekey char(30) not null, +url char(50), +title char(20), +leibie char(20), +imageurl char(100), +time char(20), +account char(20), +primary key (uniquekey) +); + +create table shouye( +uniquekey char(30) not null, +url char(50), +title char(20), +leibie char(20), +imageurl char(100), +primary key (uniquekey) +); + + + + + + + + + + + diff --git a/GuiLinGL/.gitignore b/GuiLinGL/.gitignore new file mode 100644 index 0000000..39fb081 --- /dev/null +++ b/GuiLinGL/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/GuiLinGL/.idea/caches/build_file_checksums.ser b/GuiLinGL/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000..962bd50 Binary files /dev/null and b/GuiLinGL/.idea/caches/build_file_checksums.ser differ diff --git a/GuiLinGL/.idea/caches/gradle_models.ser b/GuiLinGL/.idea/caches/gradle_models.ser new file mode 100644 index 0000000..d2f31f5 Binary files /dev/null and b/GuiLinGL/.idea/caches/gradle_models.ser differ diff --git a/GuiLinGL/.idea/codeStyles/Project.xml b/GuiLinGL/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/GuiLinGL/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/GuiLinGL/.idea/gradle.xml b/GuiLinGL/.idea/gradle.xml new file mode 100644 index 0000000..78de21c --- /dev/null +++ b/GuiLinGL/.idea/gradle.xml @@ -0,0 +1,25 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/.idea/misc.xml b/GuiLinGL/.idea/misc.xml new file mode 100644 index 0000000..4a04528 --- /dev/null +++ b/GuiLinGL/.idea/misc.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/.idea/modules.xml b/GuiLinGL/.idea/modules.xml new file mode 100644 index 0000000..6cf5cf8 --- /dev/null +++ b/GuiLinGL/.idea/modules.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/.idea/runConfigurations.xml b/GuiLinGL/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/GuiLinGL/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/.gitignore b/GuiLinGL/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/GuiLinGL/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/GuiLinGL/app/build.gradle b/GuiLinGL/app/build.gradle new file mode 100644 index 0000000..d71b5f6 --- /dev/null +++ b/GuiLinGL/app/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 26 + defaultConfig { + applicationId "com.fly.guilingl" + minSdkVersion 16 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.android.support:appcompat-v7:26.1.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestCompile('com.android.support:support-annotations:26.1.0') { force = true } + compile 'com.lzy.net:okgo:2.0.0' + compile 'com.android.support:design:26.1.0' + compile 'com.android.support:recyclerview-v7:26.1.0' + compile 'com.android.support:cardview-v7:26.1.0' + implementation files('libs/systembartint-1.0.4.jar') + compile 'com.lzy.net:okgo:2.0.0' + compile 'com.github.bumptech.glide:glide:3.6.1' + compile 'de.hdodenhof:circleimageview:2.1.0' + implementation 'cn.jzvd:jiaozivideoplayer:6.3.1' +} diff --git a/GuiLinGL/app/libs/systembartint-1.0.4.jar b/GuiLinGL/app/libs/systembartint-1.0.4.jar new file mode 100644 index 0000000..f1559f5 Binary files /dev/null and b/GuiLinGL/app/libs/systembartint-1.0.4.jar differ diff --git a/GuiLinGL/app/proguard-rules.pro b/GuiLinGL/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/GuiLinGL/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/GuiLinGL/app/src/androidTest/java/com/fly/guilingl/ExampleInstrumentedTest.java b/GuiLinGL/app/src/androidTest/java/com/fly/guilingl/ExampleInstrumentedTest.java new file mode 100644 index 0000000..0dbfb02 --- /dev/null +++ b/GuiLinGL/app/src/androidTest/java/com/fly/guilingl/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.fly.guilingl; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.fly.guilingl", appContext.getPackageName()); + } +} diff --git a/GuiLinGL/app/src/main/AndroidManifest.xml b/GuiLinGL/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2ce0661 --- /dev/null +++ b/GuiLinGL/app/src/main/AndroidManifest.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/Collection.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/Collection.java new file mode 100644 index 0000000..b84df03 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/Collection.java @@ -0,0 +1,30 @@ +package com.fly.guilingl.bean; + +import android.database.Cursor; + +/** + * Created by Fly on 2017/3/3. + */ + +public class Collection { + public static Collection createFromCursor(Cursor cursor) { + Collection collection = new Collection(); + collection.url = cursor.getString(cursor.getColumnIndex("url")); + collection.title = (cursor.getString(cursor.getColumnIndex("title"))); + collection.uniquekey = (cursor.getString(cursor.getColumnIndex("uniquekey"))); + collection.leibie = (cursor.getString(cursor.getColumnIndex("leibie"))); + collection.account = (cursor.getString(cursor.getColumnIndex("account"))); + collection.imageUrl = (cursor.getString(cursor.getColumnIndex("imageurl"))); + collection.time = (cursor.getString(cursor.getColumnIndex("time"))); + System.out.println("CollectionNews---->" + collection.title); + return collection; + } + + public String url; + public String title; + public String uniquekey; + public String leibie; + public String account; + public String imageUrl; + public String time; +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/DingDanBean.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/DingDanBean.java new file mode 100644 index 0000000..60d0a68 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/DingDanBean.java @@ -0,0 +1,21 @@ +package com.fly.guilingl.bean; + +/** + * Created by Fly on 2019/1/13/013. + */ + +public class DingDanBean { + public String title;//商品的名字 + public String url;//商品的链接 + public String imageUrl;//商品的图片链接 + public String uniquekey;//商品的key + public String leibie;//商品的类别 + public int amount;//商品的个数 + public String price;//商品的单价 + public String time;//购买商品的时间 + + + public String name;//商品所在的店铺 + public String place;//从哪出发 + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/GrideData.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/GrideData.java new file mode 100644 index 0000000..092dd6f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/GrideData.java @@ -0,0 +1,26 @@ +package com.fly.guilingl.bean; + +/** + * Created by Administrator on 2019/1/4/004. + */ + +public class GrideData { + + public static final int TYPE_LINEAR = 1; + public static final int TYPE_GRIDE = 2; + public int viewType = 1,spanCount=1; + public String data; + public String url; + public String uniquekey; + public GrideData(int viewType, String data,String url,String uniquekey) { + this.viewType = viewType; + this.data = data; + this.url = url; + this.uniquekey = uniquekey; + if (viewType == TYPE_GRIDE) { + spanCount = 1; + } else { + spanCount = 2; + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/History.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/History.java new file mode 100644 index 0000000..d38f001 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/History.java @@ -0,0 +1,17 @@ +package com.fly.guilingl.bean; + +public class History { + + public String account; + public String uniquekey; + public String url; + public String title; + public String leibie; + public String imageUrl; + public String time; + + @Override + public String toString() { + return title + "--" + leibie + "--" + account; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/HomeNextBean.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/HomeNextBean.java new file mode 100644 index 0000000..df0678b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/HomeNextBean.java @@ -0,0 +1,21 @@ +package com.fly.guilingl.bean; + +/** + * Created by Fly on 2019/1/8/008. + */ + +public class HomeNextBean { + private String title; + + public HomeNextBean(String title) { + this.title = title; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/NewsData.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/NewsData.java new file mode 100644 index 0000000..0a01911 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/NewsData.java @@ -0,0 +1,22 @@ +package com.fly.guilingl.bean; + +/** + * Created by Fly on 2017/12/13. + */ + +public class NewsData { + public String author_name;//新闻 + public String category;//新闻类别 + public String date;//时间 + public String thumbnail_pic_s;//第一张图 + public String thumbnail_pic_s02;//第二张图 + public String thumbnail_pic_s03;//第三张图 + public String title;//名称 + public String uniquekey;//key + public String url;//url + + + + + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/ShopBean.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/ShopBean.java new file mode 100644 index 0000000..42b0028 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/ShopBean.java @@ -0,0 +1,16 @@ +package com.fly.guilingl.bean; + +/** + * Created by Fly on 2019/1/12/012. + */ + +public class ShopBean { + public String imageurl; + public String leibie; + public String title; + public String uniquekey; + public String url; + public String name; + public String place; + public String price; +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/WeatherBean.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/WeatherBean.java new file mode 100644 index 0000000..20f95b2 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/WeatherBean.java @@ -0,0 +1,32 @@ +package com.fly.guilingl.bean; + +import org.json.JSONObject; + +/** + * Created by Fly on 2019/3/28/028. + */ + +public class WeatherBean { + + public String current_pubTime; + public String current_temperature; + public String current_weather; + public String current_feelsLike;//体感温度 + public String current_humidity;//相对空气湿度 + public String current_pressure;//气压 + + public String weather_from; + public String weather_to; + + public String temperature_from; + public String temperature_to; + + public String time; + + public String weekDay; + + public String str_pre; + public String sunRiseSet_from; + public String sunRiseSet_to; + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/WenDaBean.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/WenDaBean.java new file mode 100644 index 0000000..8cdf45f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/WenDaBean.java @@ -0,0 +1,17 @@ +package com.fly.guilingl.bean; + +public class WenDaBean { + public String title;//名称 + public String url;//链接 + public String imageUrl;//图片链接 + public String uniquekey;//key + public String leibie;//类别 + public String leibie2;//第二类别 + public String time; + public String author; + + @Override + public String toString() { + return title + "--" + url + "--" + imageUrl + "--" + uniquekey; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/YouJiBean.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/YouJiBean.java new file mode 100644 index 0000000..100098a --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/bean/YouJiBean.java @@ -0,0 +1,22 @@ +package com.fly.guilingl.bean; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class YouJiBean { + + public String title;//名称 + public String url;//链接 + public String imageUrl;//图片链接 + public String uniquekey;//key + public String leibie;//类别 + public String leibie2;//第二类别 + public String time; + public String author; + + @Override + public String toString() { + return title + "--" + url + "--" + imageUrl + "--" + uniquekey; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/constant/Data.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/constant/Data.java new file mode 100644 index 0000000..ff9c3e1 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/constant/Data.java @@ -0,0 +1,49 @@ +package com.fly.guilingl.constant; + +import android.content.Context; + +import com.fly.guilingl.R; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class Data { + /** + * 从raw中读取txt + */ + public static String readFromRaw(Context context,int id) { + try { + //InputStream is = context.getResources().openRawResource(R.raw.videodata); + InputStream is = context.getResources().openRawResource(id); + String text = readTextFromSDcard(is); + return text; + } catch (Exception e) { + e.printStackTrace(); + } + return "没有读取到"; + } + + /** + * 按行读取txt + * + * @param is + * @return + * @throws Exception + */ + private static String readTextFromSDcard(InputStream is) throws Exception { + InputStreamReader reader = new InputStreamReader(is); + BufferedReader bufferedReader = new BufferedReader(reader); + StringBuffer buffer = new StringBuffer(""); + String str; + while ((str = bufferedReader.readLine()) != null) { + buffer.append(str); + buffer.append("\n"); + } + return buffer.toString(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/CollectionOpenHelper.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/CollectionOpenHelper.java new file mode 100644 index 0000000..6971da5 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/CollectionOpenHelper.java @@ -0,0 +1,34 @@ +package com.fly.guilingl.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * 收藏数据库建立 + */ + +public class CollectionOpenHelper extends SQLiteOpenHelper { + public CollectionOpenHelper(Context context) { + super(context, "collection.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // 字段: _id , url:新闻链接, title新闻标题 + String sql = "create table collection (_id integer primary key autoincrement," + + " uniquekey varchar(30)," + + "url varchar(50)," + + "title varchar(20)," + + "leibie varchar(20)," + + "imageurl varchar(100)," + + "time varchar(20)," + + "account varchar(20))"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/DingDanOpenHelper.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/DingDanOpenHelper.java new file mode 100644 index 0000000..1cf7877 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/DingDanOpenHelper.java @@ -0,0 +1,36 @@ +package com.fly.guilingl.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class DingDanOpenHelper extends SQLiteOpenHelper { + public DingDanOpenHelper(Context context) { + super(context, "dingdan.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // 字段: _id , url:新闻链接, title新闻标题 + String sql = "create table dingdan (_id integer primary key autoincrement," + + " uniquekey varchar(30)," + + "url varchar(50)," + + "title varchar(20)," + + "leibie varchar(20)," + + "imageurl varchar(500)," + + "amount int," + + "price varchar(20)," + + "time varchar(20)," + + "name varchar(20))"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/HistoryOpenHelper.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/HistoryOpenHelper.java new file mode 100644 index 0000000..f08c433 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/HistoryOpenHelper.java @@ -0,0 +1,35 @@ +package com.fly.guilingl.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class HistoryOpenHelper extends SQLiteOpenHelper { + + public HistoryOpenHelper(Context context) { + super(context, "history.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // 字段: _id , url:新闻链接, title新闻标题 + String sql = "create table history (_id integer primary key autoincrement, " + + "uniquekey varchar(30)," + + "url varchar(50)," + + "title varchar(20)," + + "leibie varchar(20)," + + "imageurl varchar(100)," + + "time varchar(20)," + + "account varchar(20))"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/RegisterOpenHelper.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/RegisterOpenHelper.java new file mode 100644 index 0000000..d703b14 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/RegisterOpenHelper.java @@ -0,0 +1,28 @@ +package com.fly.guilingl.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class RegisterOpenHelper extends SQLiteOpenHelper { + + public RegisterOpenHelper(Context context) { + super(context, "register.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // 字段: _id , account:账户, pwd密码 MD5加密 + String sql = "create table register (_id integer primary key autoincrement, account varchar(20),pwd varchar(50))"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/SimpleQueryHandler.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/SimpleQueryHandler.java new file mode 100644 index 0000000..cffc0b3 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/SimpleQueryHandler.java @@ -0,0 +1,26 @@ +package com.fly.guilingl.db; + +import android.content.AsyncQueryHandler; +import android.content.ContentResolver; +import android.database.Cursor; +import android.widget.CursorAdapter; + +public class SimpleQueryHandler extends AsyncQueryHandler { + + public SimpleQueryHandler(ContentResolver cr) { + super(cr); + } + + //查询完毕时调用 + //arg0、arg1:查询开始时携带的数据 + //arg2:查询结果 + @Override + protected void onQueryComplete(int token, Object cookie, Cursor cursor) { + super.onQueryComplete(token, cookie, cursor); +// CursorUtils.printCursor(cursor); + if (cookie != null && cookie instanceof CursorAdapter) { + //查询得到的cursor,交给CursorAdapter,由它把cursor的内容显示至listView + ((CursorAdapter) cookie).changeCursor(cursor); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/WenDaOpenHelper.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/WenDaOpenHelper.java new file mode 100644 index 0000000..55f2dca --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/WenDaOpenHelper.java @@ -0,0 +1,30 @@ +package com.fly.guilingl.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +public class WenDaOpenHelper extends SQLiteOpenHelper { + public WenDaOpenHelper(Context context) { + super(context, "wenda.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // 字段: _id , url:新闻链接, title新闻标题 + String sql = "create table wenda (_id integer primary key autoincrement," + + "uniquekey varchar(30)," + + "url varchar(100)," + + "title varchar(20)," + + "leibie varchar(20)," + + "imageurl varchar(100)," + + "time varchar(20)," + + "account varchar(20))"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/YouJiOpenHelper.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/YouJiOpenHelper.java new file mode 100644 index 0000000..8874acb --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/YouJiOpenHelper.java @@ -0,0 +1,34 @@ +package com.fly.guilingl.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class YouJiOpenHelper extends SQLiteOpenHelper { + public YouJiOpenHelper(Context context) { + super(context, "youji.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // 字段: _id , url:新闻链接, title新闻标题 + String sql = "create table youji (_id integer primary key autoincrement," + + "uniquekey varchar(30)," + + "url varchar(100)," + + "title varchar(20)," + + "leibie varchar(20)," + + "imageurl varchar(100)," + + "time varchar(20)," + + "account varchar(20))"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/CollectionDao.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/CollectionDao.java new file mode 100644 index 0000000..1964a97 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/CollectionDao.java @@ -0,0 +1,187 @@ +package com.fly.guilingl.db.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.util.Log; +import android.widget.Toast; + +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.db.CollectionOpenHelper; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + + +/** + * 收藏的增删改查 + */ + +public class CollectionDao { + //2 声明一个对象 + private static CollectionDao sInstance = null; + private Context mContext; + private CollectionOpenHelper mHelper; + + //1 私有的构造方法 + private CollectionDao(Context context) { + mContext = context; + mHelper = new CollectionOpenHelper(context); + } + + // 3公开方法获取对象 + public static CollectionDao getInstance(Context ctx) { + if (sInstance == null) { + synchronized (CollectionDao.class) { + if (sInstance == null) { + sInstance = new CollectionDao(ctx); + } + } + } + return sInstance; + } + + /** + * 查詢是否收藏了新闻 + * + * @param uniquekey + */ + public boolean find(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("collection", new String[]{"uniquekey"}, + "uniquekey = ? and account = ?", + new String[]{uniquekey, account}, null, null, null); + boolean exist = false; + if (cursor.moveToFirst()) { + exist = true; + } + cursor.close(); + database.close(); + Log.e("---CollectionDao--", exist + ""); + return exist; + } + + + /** + * 查询数据库是0为空 + * + * @return + */ + public boolean isEmpty(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + int amount = 0; + //Cursor cursor = database.rawQuery("select * from collection", null); + Cursor cursor = database.query("collection", + new String[]{"account"}, "account = ?", + new String[]{account}, null, null, null); + amount = cursor.getCount(); + cursor.close(); + database.close(); + if (amount == 0) { + return true; + } else { + return false; + } + } + + /** + * 查询所有 + * + * @return + */ + public Cursor query() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + //Cursor cursor = database.query("collection", new String[]{"uniquekey", "url", "title"}, null, null, null, null, "_id desc"); + Cursor cursor = database.rawQuery("select * from collection order by _id desc", null); + database.close(); + return cursor; + } + + /** + * 查询所有数据保存在ArraList中 + * + * @return + */ + public ArrayList findAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("collection", + new String[]{"uniquekey", "url", "title", "leibie", "account"}, + "account = ?", + new String[]{account}, + null, + null, + "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + Collection news = new Collection(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String acc = cursor.getString(4); + + news.uniquekey = uniquekey; + news.url = url; + news.title = title; + news.leibie = leibie; + news.account = acc; + list.add(news); + } + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + cursor.close(); + database.close(); + + return list; + } + + /** + * 添加数据 + * + * @param url + * @param title + */ + public void add(String account, String uniquekey, String url, String title, String leibie, String imageurl, String time) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("account", account); + values.put("uniquekey", uniquekey); + values.put("url", url); + values.put("title", title); + values.put("leibie", leibie); + values.put("imageurl", imageurl); + values.put("time", time); + Long l = database.insert("collection", null, values); + Log.e("-CollectionDao-Long-", l + ""); + Toast.makeText(mContext, "收藏", Toast.LENGTH_SHORT).show(); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + } + + + /** + * 通过newsId删除收藏 + */ + public void deleteByUniquekey(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("collection", "uniquekey = ? and account = ?", new String[]{uniquekey, account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + Toast.makeText(UIUtils.getContext(), "取消收藏", Toast.LENGTH_SHORT).show(); + } + + /** + * 删除所有数据 + */ + public void deleteAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("collection", "account = ?", new String[]{account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/DingdanDao.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/DingdanDao.java new file mode 100644 index 0000000..6cc5e7b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/DingdanDao.java @@ -0,0 +1,200 @@ +package com.fly.guilingl.db.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.util.Log; +import android.widget.Toast; + +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.bean.DingDanBean; +import com.fly.guilingl.db.CollectionOpenHelper; +import com.fly.guilingl.db.DingDanOpenHelper; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class DingdanDao { + //2 声明一个对象 + private static DingdanDao sInstance = null; + private Context mContext; + private DingDanOpenHelper mHelper; + + //1 私有的构造方法 + private DingdanDao(Context context) { + mContext = context; + mHelper = new DingDanOpenHelper(context); + } + + // 3公开方法获取对象 + public static DingdanDao getInstance(Context ctx) { + if (sInstance == null) { + synchronized (DingdanDao.class) { + if (sInstance == null) { + sInstance = new DingdanDao(ctx); + } + } + } + return sInstance; + } + + /** + * 查詢是否收藏了新闻 + * + * @param uniquekey + */ + public boolean find(String uniquekey) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("dingdan", new String[]{"uniquekey"}, "uniquekey = ?", new String[]{uniquekey}, null, null, null); + boolean exist = false; + if (cursor.moveToFirst()) { + exist = true; + } + cursor.close(); + database.close(); + Log.e("---Dao--", exist + ""); + return exist; + } + + + /** + * 查询数据库是0为空 + * + * @return + */ + public int isEmpty() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + int amount = 0; + Cursor cursor = database.rawQuery("select * from dingdan", null); + amount = cursor.getCount(); + cursor.close(); + database.close(); + return amount; + } + + /** + * 查询所有 + * + * @return + */ + public Cursor query() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + //Cursor cursor = database.query("collection", new String[]{"uniquekey", "url", "title"}, null, null, null, null, "_id desc"); + Cursor cursor = database.rawQuery("select * from dingdan order by _id desc", null); + database.close(); + return cursor; + } + + /** + * 查询所有数据保存在ArraList中 + * + * @return + */ + public ArrayList findAll() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("dingdan", new String[]{"uniquekey", "url", "title","leibie", + "imageurl","amount","price","time","name"}, null, null, null, null, "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + DingDanBean bean = new DingDanBean(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String imageurl = cursor.getString(4); + int amount = cursor.getInt(5); + String price = cursor.getString(6); + String time = cursor.getString(7); + String name = cursor.getString(8); + bean.url = url; + bean.title = title; + bean.uniquekey = uniquekey; + bean.leibie = leibie; + bean.imageUrl = imageurl; + bean.amount = amount; + bean.price = price; + bean.time = time; + bean.name = name; + list.add(bean); + } + // 通知数据库发生变化 + //mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingldingdan"), null); + cursor.close(); + database.close(); + + return list; + } + + /** + * 添加数据 + * + * @param url + * @param title + */ + public void add(String uniquekey, String url, String title,String leibie, + String imageurl,int amount,String price, String time,String name) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("uniquekey", uniquekey); + values.put("url", url); + values.put("title", title); + values.put("leibie", leibie); + values.put("imageurl", imageurl); + values.put("amount", amount); + values.put("price", price); + values.put("time", time); + values.put("name", name); + database.insert("dingdan", null, values); + //Toast.makeText(mContext, "我的订单", Toast.LENGTH_SHORT).show(); + database.close(); + // 通知数据库发生变化 + //mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingldingdan"), null); + } + + + /** + * 通过newsId删除收藏 + * + * @param uniquekey + */ + public void deleteByNewsId(String uniquekey) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("dingdan", "uniquekey = ?", new String[]{uniquekey}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingldingdan"), null); + Toast.makeText(mContext, "取消订单", Toast.LENGTH_SHORT).show(); + } + + /** + * 通过time删除收藏 + * + * @param time + */ + public void deleteByTime(String time) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("dingdan", "time = ?", new String[]{time}); + database.close(); + // 通知数据库发生变化 + //mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingldingdan"), null); + //Toast.makeText(mContext, "删除成功", Toast.LENGTH_SHORT).show(); + } + + /** + * 删除所有数据 + */ + public void deleteAll() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("dingdan", null, null); + database.close(); + // 通知数据库发生变化 + //mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingldingdan"), null); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/HistoryDao.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/HistoryDao.java new file mode 100644 index 0000000..c60faca --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/HistoryDao.java @@ -0,0 +1,178 @@ +package com.fly.guilingl.db.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.util.Log; + + +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.db.HistoryOpenHelper; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + +/** + * Created by Fly on 2017/2/14. + * 收藏的增删改查 + */ + +public class HistoryDao { + + //2 声明一个对象 + private static HistoryDao sInstance = null; + private Context mContext; + private HistoryOpenHelper mHelper; + + //1 私有的构造方法 + private HistoryDao(Context context) { + mContext = context; + mHelper = new HistoryOpenHelper(context); + } + + // 3公开方法获取对象 + public static HistoryDao getInstance(Context ctx) { + if (sInstance == null) { + synchronized (HistoryDao.class) { + if (sInstance == null) { + sInstance = new HistoryDao(ctx); + } + } + } + return sInstance; + } + + /** + * 查詢是否收有历史 + * + * @param uniquekey + */ + public boolean find(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("history", + new String[]{"uniquekey", "account"}, "uniquekey = ? and account = ?", + new String[]{uniquekey, account}, null, null, null); + boolean exist = false; + if (cursor.moveToFirst()) { + exist = true; + } + cursor.close(); + database.close(); + Log.e("---HistoryDao--", exist + ""); + return exist; + } + + /** + * 查询数据库是0为空 + * + * @return + */ + public boolean isEmpty(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + int amount = 0; + //Cursor cursor = database.rawQuery("select * from history where account = ?", null); + Cursor cursor = database.query("history", + new String[]{"account"}, "account = ?", + new String[]{account}, null, null, null); + amount = cursor.getCount(); + cursor.close(); + database.close(); + if (amount == 0) { + return true; + } else { + return false; + } + } + + + /** + * 查询所有 + * + * @return + */ + public Cursor query() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + //Cursor cursor = database.query("history", new String[]{"url", "title"}, null, null, null, null, "_id desc"); + Cursor cursor = database.rawQuery("select * from history order by _id desc", null); + database.close(); + return cursor; + } + + /** + * 查询所有数据保存在ArraList中 + * + * @return + */ + public ArrayList findAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("history", + new String[]{"uniquekey", "url", "title", "leibie", "account"}, + "account = ?", + new String[]{account}, + null, + null, + "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + Collection news = new Collection(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String acc = cursor.getString(4); + + news.uniquekey = uniquekey; + news.url = url; + news.title = title; + news.leibie = leibie; + news.account = acc; + list.add(news); + } + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilinglhistory"), null); + cursor.close(); + database.close(); + + return list; + } + + /** + * 添加数据 + * + * @param url + * @param title + */ + public void add(String account, String uniquekey, String url, String title, String leibie, String imageurl,String time) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("uniquekey", uniquekey); + values.put("url", url); + values.put("title", title); + values.put("leibie", leibie); + values.put("account", account); + values.put("imageurl", imageurl); + values.put("time", time); + Long l = database.insert("history", null, values); + Log.e("-HistoryDao-Long-", l + ""); + database.close(); + ToastUtils.showToast(mContext, "历史成功"); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilinglhistory"), null); + + } + + + /** + * 删除所有数据 + */ + public void deleteAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("history", "account = ?", new String[]{account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilinglhistory"), null); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/RegisterDao.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/RegisterDao.java new file mode 100644 index 0000000..394af3b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/RegisterDao.java @@ -0,0 +1,107 @@ +package com.fly.guilingl.db.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.widget.Toast; + +import com.fly.guilingl.db.RegisterOpenHelper; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class RegisterDao { + + //2 声明一个对象 + private static RegisterDao sInstance = null; + private Context mContext; + private RegisterOpenHelper mHelper; + + //1 私有的构造方法 + private RegisterDao(Context context) { + mContext = context; + mHelper = new RegisterOpenHelper(context); + } + + // 3公开方法获取对象 + public static RegisterDao getInstance(Context ctx) { + if (sInstance == null) { + synchronized (RegisterDao.class) { + if (sInstance == null) { + sInstance = new RegisterDao(ctx); + } + } + } + return sInstance; + } + + /** + * 添加数据 + */ + public void add(String account, String pwd) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("account", account); + values.put("pwd", pwd); + database.insert("register", null, values); + //Toast.makeText(UIUtils.getContext(), "注册成功!", Toast.LENGTH_SHORT).show(); + database.close(); + } + + + /** + * 查詢是否有此条账户 + */ + public boolean find(String account, String pwd) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("register", + new String[]{"account", "pwd"}, "account = ? and pwd = ?", new String[]{account, pwd}, null, null, null); + boolean exist = false; + if (cursor.moveToFirst()) { + exist = true; + } + cursor.close(); + database.close(); + return exist; + } + + /** + * 通过账号查询密码 + * @param account + * @return + */ + public String queryPwdByAccount(String account) { + String strPwd = "xxx"; + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("register", new String[]{"pwd"}, "account = ? ", new String[]{account}, null, null, null); + for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) { + strPwd = cursor.getString(cursor.getColumnIndex("pwd")); + } + cursor.close(); + database.close(); + return strPwd; + } + + /** + * 更改密码 + * @param account + * @param newPwd + * @return + */ + public String updatePwdByAccount(String account,String newPwd) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("pwd",newPwd); + int i = database.update("register",values,"account = ? ",new String[]{account}); + if (i == 0){ + return "error"; + }else { + return "successful"; + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/WenDaDao.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/WenDaDao.java new file mode 100644 index 0000000..c69d70a --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/WenDaDao.java @@ -0,0 +1,226 @@ +package com.fly.guilingl.db.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.util.Log; +import android.widget.Toast; + +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.bean.WenDaBean; +import com.fly.guilingl.db.CollectionOpenHelper; +import com.fly.guilingl.db.WenDaOpenHelper; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class WenDaDao { + //2 声明一个对象 + private static WenDaDao sInstance = null; + private Context mContext; + private WenDaOpenHelper mHelper; + + //1 私有的构造方法 + private WenDaDao(Context context) { + mContext = context; + mHelper = new WenDaOpenHelper(context); + } + + // 3公开方法获取对象 + public static WenDaDao getInstance(Context ctx) { + if (sInstance == null) { + synchronized (WenDaDao.class) { + if (sInstance == null) { + sInstance = new WenDaDao(ctx); + } + } + } + return sInstance; + } + + /** + * 查詢是否收藏了新闻 + * + * @param uniquekey + */ + public boolean find(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("collection", new String[]{"uniquekey"}, + "uniquekey = ? and account = ?", + new String[]{uniquekey, account}, null, null, null); + boolean exist = false; + if (cursor.moveToFirst()) { + exist = true; + } + cursor.close(); + database.close(); + Log.e("---CollectionDao--", exist + ""); + return exist; + } + + + /** + * 查询数据库是0为空 + * + * @return + */ + public boolean isEmpty(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + int amount = 0; + //Cursor cursor = database.rawQuery("select * from collection", null); + Cursor cursor = database.query("collection", + new String[]{"account"}, "account = ?", + new String[]{account}, null, null, null); + amount = cursor.getCount(); + cursor.close(); + database.close(); + if (amount == 0) { + return true; + } else { + return false; + } + } + + /** + * 查询所有 + * + * @return + */ + public Cursor query() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + //Cursor cursor = database.query("collection", new String[]{"uniquekey", "url", "title"}, null, null, null, null, "_id desc"); + Cursor cursor = database.rawQuery("select * from collection order by _id desc", null); + database.close(); + return cursor; + } + + /** + * 查询所有数据保存在ArraList中 + * + * @return + */ + public ArrayList findAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("wenda", + new String[]{"uniquekey", "url", "title", "leibie", "imageurl", "time", "account"}, + "account = ?", + new String[]{account}, + null, + null, + "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + WenDaBean bean = new WenDaBean(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String imageUrl = cursor.getString(4); + String time = cursor.getString(5); + String author = cursor.getString(6); + + bean.uniquekey = uniquekey; + bean.url = url; + bean.title = title; + bean.leibie = leibie; + bean.imageUrl = imageUrl; + bean.author = author; + bean.time = time; + list.add(bean); + } + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + cursor.close(); + database.close(); + + return list; + } + + /** + * 添加数据 + */ + public void add(String uniquekey, String url, String title, String leibie, String imageurl, String time, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("account", account); + values.put("uniquekey", uniquekey); + values.put("url", url); + values.put("title", title); + values.put("leibie", leibie); + values.put("imageurl", imageurl); + values.put("time", time); + Long l = database.insert("wenda", null, values); + Log.e("-WenDaDao-Long-", l + ""); + Toast.makeText(mContext, "添加成功", Toast.LENGTH_SHORT).show(); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + } + + + /** + * 通过newsId删除收藏 + */ + public void deleteByUniquekey(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("collection", "uniquekey = ? and account = ?", new String[]{uniquekey, account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + Toast.makeText(UIUtils.getContext(), "取消收藏", Toast.LENGTH_SHORT).show(); + } + + /** + * 删除所有数据 + */ + public void deleteAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("wenda", "account = ?", new String[]{account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + } + public ArrayList findAll() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("wenda", + new String[]{"uniquekey", "url", "title", "leibie", "imageurl", "time", "account"}, + "", + new String[]{}, + null, + null, + "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + WenDaBean bean = new WenDaBean(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String imageUrl = cursor.getString(4); + String time = cursor.getString(5); + String author = cursor.getString(6); + + bean.uniquekey = uniquekey; + bean.url = url; + bean.title = title; + bean.leibie = leibie; + bean.imageUrl = imageUrl; + bean.author = author; + bean.time = time; + list.add(bean); + } + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + cursor.close(); + database.close(); + + return list; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/YouJiDao.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/YouJiDao.java new file mode 100644 index 0000000..502c28c --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/db/dao/YouJiDao.java @@ -0,0 +1,226 @@ +package com.fly.guilingl.db.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.util.Log; +import android.widget.Toast; + +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.db.CollectionOpenHelper; +import com.fly.guilingl.db.YouJiOpenHelper; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class YouJiDao { + //2 声明一个对象 + private static YouJiDao sInstance = null; + private Context mContext; + private YouJiOpenHelper mHelper; + + //1 私有的构造方法 + private YouJiDao(Context context) { + mContext = context; + mHelper = new YouJiOpenHelper(context); + } + + // 3公开方法获取对象 + public static YouJiDao getInstance(Context ctx) { + if (sInstance == null) { + synchronized (YouJiDao.class) { + if (sInstance == null) { + sInstance = new YouJiDao(ctx); + } + } + } + return sInstance; + } + + /** + * 查詢是否收藏了新闻 + * + * @param uniquekey + */ + public boolean find(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("collection", new String[]{"uniquekey"}, + "uniquekey = ? and account = ?", + new String[]{uniquekey, account}, null, null, null); + boolean exist = false; + if (cursor.moveToFirst()) { + exist = true; + } + cursor.close(); + database.close(); + Log.e("---CollectionDao--", exist + ""); + return exist; + } + + + /** + * 查询数据库是0为空 + * + * @return + */ + public boolean isEmpty(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + int amount = 0; + //Cursor cursor = database.rawQuery("select * from collection", null); + Cursor cursor = database.query("collection", + new String[]{"account"}, "account = ?", + new String[]{account}, null, null, null); + amount = cursor.getCount(); + cursor.close(); + database.close(); + if (amount == 0) { + return true; + } else { + return false; + } + } + + /** + * 查询所有 + * + * @return + */ + public Cursor query() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + //Cursor cursor = database.query("collection", new String[]{"uniquekey", "url", "title"}, null, null, null, null, "_id desc"); + Cursor cursor = database.rawQuery("select * from collection order by _id desc", null); + database.close(); + return cursor; + } + + /** + * 查询所有数据保存在ArraList中 + * + * @return + */ + public ArrayList findAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("youji", + new String[]{"uniquekey", "url", "title", "leibie", "imageurl", "time", "account"}, + "account = ?", + new String[]{account}, + null, + null, + "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + YouJiBean bean = new YouJiBean(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String imageUrl = cursor.getString(4); + String time = cursor.getString(5); + String author = cursor.getString(6); + + bean.uniquekey = uniquekey; + bean.url = url; + bean.title = title; + bean.leibie = leibie; + bean.imageUrl = imageUrl; + bean.author = author; + bean.time = time; + list.add(bean); + } + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + cursor.close(); + database.close(); + + return list; + } + + /** + * 添加数据 + */ + public void add(String uniquekey, String url, String title, String leibie, String imageurl, String time, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("account", account); + values.put("uniquekey", uniquekey); + values.put("url", url); + values.put("title", title); + values.put("leibie", leibie); + values.put("imageurl", imageurl); + values.put("time", time); + Long l = database.insert("youji", null, values); + Log.e("-YouJiDao-Long-", l + ""); + Toast.makeText(mContext, "添加成功", Toast.LENGTH_SHORT).show(); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + } + + + /** + * 通过newsId删除收藏 + */ + public void deleteByUniquekey(String uniquekey, String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("collection", "uniquekey = ? and account = ?", new String[]{uniquekey, account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + Toast.makeText(UIUtils.getContext(), "取消收藏", Toast.LENGTH_SHORT).show(); + } + + /** + * 删除所有数据 + */ + public void deleteAll(String account) { + SQLiteDatabase database = mHelper.getWritableDatabase(); + database.delete("youji", "account = ?", new String[]{account}); + database.close(); + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + } + public ArrayList findAll() { + SQLiteDatabase database = mHelper.getWritableDatabase(); + Cursor cursor = database.query("youji", + new String[]{"uniquekey", "url", "title", "leibie", "imageurl", "time", "account"}, + "", + new String[]{}, + null, + null, + "_id desc"); + ArrayList list = new ArrayList(); + while (cursor.moveToNext()) { + YouJiBean bean = new YouJiBean(); + String uniquekey = cursor.getString(0); + String url = cursor.getString(1); + String title = cursor.getString(2); + String leibie = cursor.getString(3); + String imageUrl = cursor.getString(4); + String time = cursor.getString(5); + String author = cursor.getString(6); + + bean.uniquekey = uniquekey; + bean.url = url; + bean.title = title; + bean.leibie = leibie; + bean.imageUrl = imageUrl; + bean.author = author; + bean.time = time; + list.add(bean); + } + // 通知数据库发生变化 + mContext.getContentResolver().notifyChange(Uri.parse("content://com.fly.guilingl"), null); + cursor.close(); + database.close(); + + return list; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/Constant.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/Constant.java new file mode 100644 index 0000000..67981bc --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/Constant.java @@ -0,0 +1,13 @@ +package com.fly.guilingl.gloabal; + +/** + * Created by Administrator on 2019/1/5/005. + */ + +public class Constant { + public static String catelogdate = "{ \"error_code\": 0, \"reason\": \"成功的返回\", \"result\": { \"data\": [ { \"title\": \"大家都在看\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林小众神秘地\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"阳朔怎么玩\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"当地美食:不止米粉\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"01/概况\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林速览\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"推荐旅行时间\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"建议游玩天数\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"消费水平\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"02/桂林不容错过\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"泛舟漓江体验“画中游”\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"漓江啤酒鱼的地道吃法\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"山水实景演出中的民风民情\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"看气势恢弘的龙脊梯田\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"阳朔西街的悠闲时光\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"阳朔骑行好风光\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"到虞山桥寻日落与童趣\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"03/行前准备\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"穿衣指南\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"省钱妙计\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"参考资料\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"机票+住宿\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"04/景点\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"景点概况\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"阳朔&漓江人气景点\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"龙脊梯田人气景点\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林地区人气景点Top10\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"周边县城景点\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"05/住宿\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"概述\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"火车站周边\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林北站区\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"十字街\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"七星景区\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"兴安古镇\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林市中心\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林临江观景\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林青年旅社\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林阳朔风情西街\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"06/餐饮\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"餐饮概况\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"经典桂林风味菜馆推荐\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"阳朔啤酒漓江鱼人气餐厅Top10\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"特色美食\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林米粉人气店Top10\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"“甲天下”的除了山水,这里还有享誉\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"07/购物\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"购物概况\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"特色商品\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林市人气购物地推荐\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"08/娱乐\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"娱乐概况\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"看演出\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"骑行\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"漂流\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"攀岩\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"09/行程推荐\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林经典二日游\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"桂林背包四日游\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"10/实用信息\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"语言\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"邮局\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"银行\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"旅行安全\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"11/关于桂林要知道\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"文化\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"节日\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"12/如何到达\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"飞机\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"火车\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"长途巴士\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"13/内部交通\", \"type\": \"1\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"市公交车\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"出租车\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"自行车\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"轮渡\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"14/旅行路上\", \"type\": \"1\" }, { \"title\": \"推荐电影《少林小子》\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"推荐电影《星战前传3》\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"推荐电影《英雄》\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"推荐书籍《桂林老板路》\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"推荐电影《BBC纪录片-美丽中国》\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" }, { \"title\": \"推荐电影《面纱》\", \"type\": \"2\", \"url\": \"https://blog.csdn.net/qq_32306361\" } ], \"stat\": \"1\" }}"; + + public static String getNewsData() { + return "{\"reason\":\"成功的返回\",\"result\":{\"stat\":\"1\",\"data\":[{\"uniquekey\":\"fef3ab5da81c066060d2a30efe6c236e\",\"title\":\"南京大屠杀80周年祭,某地酒会庆祝“日本天皇诞辰日”合适吗?\",\"date\":\"2017-12-13 21:06\",\"category\":\"头条\",\"author_name\":\"军情亮点\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213210638158.html\",\"thumbnail_pic_s\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_8cdfa9d26dc7c5a307c718653386bce8_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_f934583faa40b61f7e0b7a1df93d6911_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_e3c8377017d074092365a972bade075a_cover_mwpm_03200403.jpg\"},{\"uniquekey\":\"3fa5ea461337af063a8ee524f6b2cad9\",\"title\":\"日媒:尼泊尔“亲华”左翼政党赢得过半议会席位 印度或反扑\",\"date\":\"2017-12-13 22:05\",\"category\":\"头条\",\"author_name\":\"环球网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213220532159.html\",\"thumbnail_pic_s\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213220532_dfc9ae97a584689bbe7b547019666bb5_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"0a9381515858d462985581b8b40be241\",\"title\":\"女子河边散步陷入淤泥 消防员用挖掘机游泳圈救人\",\"date\":\"2017-12-13 21:55\",\"category\":\"头条\",\"author_name\":\"环球网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213215520167.html\",\"thumbnail_pic_s\":\"http:\\/\\/04.imgmini.eastday.com\\/mobile\\/20171213\\/20171213215520_01638f6deb428fd4bf748924be01191b_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/04.imgmini.eastday.com\\/mobile\\/20171213\\/20171213215520_01638f6deb428fd4bf748924be01191b_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"ea8a6a3769c79c45ae8282f6c9983d2d\",\"title\":\"青岛现“奇葩感谢信”:室温低促分居夫妻拥抱取暖\",\"date\":\"2017-12-13 21:48\",\"category\":\"头条\",\"author_name\":\"大白新闻\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213214837440.html\",\"thumbnail_pic_s\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213214837_d41d8cd98f00b204e9800998ecf8427e_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"524556d5f0ce97129ff703591b90fe9e\",\"title\":\"郁慕明参加南京大屠杀死难者国家公祭仪式:民族记忆需两岸共同捍卫\",\"date\":\"2017-12-13 21:12\",\"category\":\"头条\",\"author_name\":\"中国新闻网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213211246239.html\",\"thumbnail_pic_s\":\"http:\\/\\/03.imgmini.eastday.com\\/mobile\\/20171213\\/20171213211246_40171744c6c9a5fd22504562feb3565b_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"ab7566e81d6fef61e2d9ce48dd056fdb\",\"title\":\"第一次去巴基斯坦,当地大妈热情邀请做客,临走还让娶她女儿\",\"date\":\"2017-12-13 21:06\",\"category\":\"头条\",\"author_name\":\"图片控\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213210602271.html\",\"thumbnail_pic_s\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210602_192d033c41c253a95ec1c47f1732eb0b_5_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210602_192d033c41c253a95ec1c47f1732eb0b_1_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210602_192d033c41c253a95ec1c47f1732eb0b_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"3890a0fb82ce91f740640c33d5be9665\",\"title\":\"这四个生肖的女人,一生财貌双收,顺风顺水,旺夫旺子孙!\",\"date\":\"2017-12-13 21:05\",\"category\":\"头条\",\"author_name\":\"有缘渡风水堂\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213210519814.html\",\"thumbnail_pic_s\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210519_f0749205dd3865d6a6096eae6fcd2e8a_4_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210519_f0749205dd3865d6a6096eae6fcd2e8a_3_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210519_f0749205dd3865d6a6096eae6fcd2e8a_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"5247524619a22c98a351e66197bac65b\",\"title\":\"停车为什么要车头朝外? 不是开玩笑,关键时刻能救命\",\"date\":\"2017-12-13 21:03\",\"category\":\"头条\",\"author_name\":\"山西晚报\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213210324720.html\",\"thumbnail_pic_s\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210324_97f2410ce27a71d5c2ccf019c90b3f18_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210324_97f2410ce27a71d5c2ccf019c90b3f18_7_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210324_97f2410ce27a71d5c2ccf019c90b3f18_3_mwpm_03200403.jpg\"},{\"uniquekey\":\"98db61a08a30a0c45360135a4a7cb8c9\",\"title\":\"河北大城:八旬老党员义务扫村街20余年\",\"date\":\"2017-12-13 21:02\",\"category\":\"头条\",\"author_name\":\"新华网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213210219414.html\",\"thumbnail_pic_s\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210219_90d634765fb68058927eac8e54c4b566_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213210219_906a529d35aa1e0b5a22ce6ecf09f47d_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"7ceda2e28595d57adda050bb78ca1a94\",\"title\":\"羽凡原谅了百合、潘粤明董洁再次同台,天下大事分久必合\",\"date\":\"2017-12-13 20:54\",\"category\":\"头条\",\"author_name\":\"大浪关注\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213205418183.html\",\"thumbnail_pic_s\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213205418_22efc374660ed708cdef59274b0f2ec6_3_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213205418_22efc374660ed708cdef59274b0f2ec6_2_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213205418_22efc374660ed708cdef59274b0f2ec6_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"06cd5a1af2966d240c5e60fd50885c44\",\"title\":\"魅蓝Note6双十二销量暴涨800%,网友:拜红米所赐\",\"date\":\"2017-12-13 20:52\",\"category\":\"头条\",\"author_name\":\"搜狐\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213205212876.html\",\"thumbnail_pic_s\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213205212_31183d3ade6e00203015498a6cc61826_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213205212_31183d3ade6e00203015498a6cc61826_6_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213205212_31183d3ade6e00203015498a6cc61826_5_mwpm_03200403.jpg\"},{\"uniquekey\":\"7806d18cd3042ce76628b229a1741a8d\",\"title\":\"她是井冈山三美之一,敢当面顶撞毛主席,曾两次掀毛主席锅盖\",\"date\":\"2017-12-13 20:34\",\"category\":\"头条\",\"author_name\":\"布衣谈史\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213203404962.html\",\"thumbnail_pic_s\":\"http:\\/\\/08.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_1692fc73c4bb939cbbe8e4fe746681cd_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/08.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_df2a35c4edde19c857382a69b07d454d_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/08.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_df5c638a686c2d1f56ceb229c3c16f7a_cover_mwpm_03200403.jpg\"},{\"uniquekey\":\"e62abf7883aa9450144a2bb60e5651bc\",\"title\":\"再见了手机、银行卡!今天,建行出手改变付款方式!\",\"date\":\"2017-12-13 20:30\",\"category\":\"头条\",\"author_name\":\"百度百家\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213203007135.html\",\"thumbnail_pic_s\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213203007_c3bea19ef8895c8ee3b0bcbfb4083a9e_2_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213203007_c3bea19ef8895c8ee3b0bcbfb4083a9e_5_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213203007_c3bea19ef8895c8ee3b0bcbfb4083a9e_4_mwpm_03200403.jpg\"},{\"uniquekey\":\"d1e4dafb3df03e4730498eda22b2a1b8\",\"title\":\"任前公示:两人拟任武汉正局级干部\",\"date\":\"2017-12-13 20:26\",\"category\":\"头条\",\"author_name\":\"长江网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213202650049.html\",\"thumbnail_pic_s\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213202650_e5bd38bcb90b27f0f58cccdacb3cb07a_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213202650_e5bd38bcb90b27f0f58cccdacb3cb07a_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"33980f3aa0ee6878297302498a3a0632\",\"title\":\"为什么电热水壶烧水这么方便,美国人却从来不用?看完终于知道了\",\"date\":\"2017-12-13 20:25\",\"category\":\"头条\",\"author_name\":\"小星社会摇\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213202525365.html\",\"thumbnail_pic_s\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_b410591c8b588278026c9692d2c8a64b_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_4f076579aa777f2d4f429d37b1832ca9_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_529c7edadc150a1d116f9cecdcbc511e_cover_mwpm_03200403.jpg\"},{\"uniquekey\":\"c3eedb9be025bbc926f898bf1c9d2416\",\"title\":\"中方对李孟贤不幸逝世深表哀悼\",\"date\":\"2017-12-13 20:22\",\"category\":\"头条\",\"author_name\":\"中国新闻网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213202217819.html\",\"thumbnail_pic_s\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213202217_b9aab91287d69e09d34fe72da9da5e7a_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"0101c96dc759afb84aac3211b41d4213\",\"title\":\"滴滴打车终于变成了他自己曾讨厌的模样?背后原因真让人心寒!\",\"date\":\"2017-12-13 20:19\",\"category\":\"头条\",\"author_name\":\"国产擎天柱\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213201914714.html\",\"thumbnail_pic_s\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213201914_d329750e11958acebf41d144320befb3_4_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213201914_d329750e11958acebf41d144320befb3_2_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213201914_d329750e11958acebf41d144320befb3_3_mwpm_03200403.jpg\"},{\"uniquekey\":\"f61568adcfa63512ced25324f63df4f7\",\"title\":\"除了美国之外,目前哪个国家拥有航母最多?\",\"date\":\"2017-12-13 20:13\",\"category\":\"头条\",\"author_name\":\"军事枭雄\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213201358276.html\",\"thumbnail_pic_s\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_fa4722c0ac9b5f55e36cf7bbc62fc61b_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_1dc98b8f115598477deca1a9a6fc03f0_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_c465a24a16bdde694f4dc4a26a07da24_cover_mwpm_03200403.jpg\"},{\"uniquekey\":\"c3ac660c5fc46abc47b2861c06d0fb37\",\"title\":\"韩国驻华大使参加南京大屠杀死难者公祭仪式\",\"date\":\"2017-12-13 20:13\",\"category\":\"头条\",\"author_name\":\"环球网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213201324242.html\",\"thumbnail_pic_s\":\"http:\\/\\/00.imgmini.eastday.com\\/mobile\\/20171213\\/20171213201324_cea3fa9b47e3efe4826b1efd0eb5a176_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/00.imgmini.eastday.com\\/mobile\\/20171213\\/20171213201324_cea3fa9b47e3efe4826b1efd0eb5a176_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"d856c9e58c79138d170bc36468199a56\",\"title\":\"地外文明难觅其踪,人类到底是不是宇宙的“独生子”?\",\"date\":\"2017-12-13 20:06\",\"category\":\"头条\",\"author_name\":\"科技日报\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213200602799.html\",\"thumbnail_pic_s\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213200602_2121b6836262faafe55f445bcff1e031_3_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213200602_2121b6836262faafe55f445bcff1e031_1_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/05.imgmini.eastday.com\\/mobile\\/20171213\\/20171213200602_2121b6836262faafe55f445bcff1e031_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"422f1fb0610af4e3922dba15a1418215\",\"title\":\"非洲小伙对着牛屁股吹气,原因让人感到不可思议\",\"date\":\"2017-12-13 19:55\",\"category\":\"头条\",\"author_name\":\"乐逗萌宠\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213195527684.html\",\"thumbnail_pic_s\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_f92e3f17d6e45d487ffc177ca081d155_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_846e435aefa56660f78843201ec2612a_cover_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213_976b113209422c4d0707156e260ccd7f_cover_mwpm_03200403.jpg\"},{\"uniquekey\":\"70340f2eb0561ffffbff1c29509af7af\",\"title\":\"南京,城祭!\",\"date\":\"2017-12-13 19:53\",\"category\":\"头条\",\"author_name\":\"新华网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213195323489.html\",\"thumbnail_pic_s\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213195323_b8bbdef519cdb846571edff3158b8d3d_4_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213195323_b8bbdef519cdb846571edff3158b8d3d_3_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/09.imgmini.eastday.com\\/mobile\\/20171213\\/20171213195323_b8bbdef519cdb846571edff3158b8d3d_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"632695630caf6540d0480dd427b76e99\",\"title\":\"农历这几月出生的人,先穷后富,前途无量,祖孙四代不愁吃喝!\",\"date\":\"2017-12-13 19:51\",\"category\":\"头条\",\"author_name\":\"搜狐\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213195141666.html\",\"thumbnail_pic_s\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213195141_214660b281d9a928b1706069427c928b_2_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213195141_214660b281d9a928b1706069427c928b_1_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213195141_214660b281d9a928b1706069427c928b_3_mwpm_03200403.jpg\"},{\"uniquekey\":\"36805f47edb694d64a1af430495cfabd\",\"title\":\"美中谈及出现大量朝鲜难民时的应对措施?中方回应\",\"date\":\"2017-12-13 19:49\",\"category\":\"头条\",\"author_name\":\"海外网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213194949547.html\",\"thumbnail_pic_s\":\"http:\\/\\/04.imgmini.eastday.com\\/mobile\\/20171213\\/20171213194949_9b2ab66914b9e19d22100c108485303e_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"5ba70cf718b9d93fe023876353a35138\",\"title\":\"12月13号后,财星高照,财源滚滚,有横财,有大奖,注定一夜暴富\",\"date\":\"2017-12-13 19:49\",\"category\":\"头条\",\"author_name\":\"生肖文章分享原创\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213194904732.html\",\"thumbnail_pic_s\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213194904_8bb7473e3cf7b684b4f4f39b610d4995_3_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213194904_8bb7473e3cf7b684b4f4f39b610d4995_1_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213194904_8bb7473e3cf7b684b4f4f39b610d4995_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"a06b39878afac45f94fd43e0daac7811\",\"title\":\"美称如朝政权垮台或巨大动乱将派军入朝 中方回应\",\"date\":\"2017-12-13 19:48\",\"category\":\"头条\",\"author_name\":\"海外网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213194824808.html\",\"thumbnail_pic_s\":\"http:\\/\\/01.imgmini.eastday.com\\/mobile\\/20171213\\/20171213194824_7a97c269bda87df232daab31964a9487_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"7e6788599d3ab422932db12e8b7b3e6a\",\"title\":\"美国务卿称若朝鲜有大动乱将派军入朝 中方回应\",\"date\":\"2017-12-13 19:27\",\"category\":\"头条\",\"author_name\":\"外交部网站\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213192745844.html\",\"thumbnail_pic_s\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192745_d41d8cd98f00b204e9800998ecf8427e_2_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192745_d41d8cd98f00b204e9800998ecf8427e_1_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/06.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192745_d41d8cd98f00b204e9800998ecf8427e_3_mwpm_03200403.jpg\"},{\"uniquekey\":\"a4e7e4f879abc02132ca22aad202ab6e\",\"title\":\"中国举行南京大屠杀死难者公祭是否考虑中日关系?中方回应\",\"date\":\"2017-12-13 19:22\",\"category\":\"头条\",\"author_name\":\"海外网\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213192240727.html\",\"thumbnail_pic_s\":\"http:\\/\\/04.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192240_74232f1f20fd657fcf0ac25502f12746_1_mwpm_03200403.jpg\"},{\"uniquekey\":\"bc976662f30098042d43a8f5e0dd7dec\",\"title\":\"海滩惊现幼年雌性抹香鲸尸体!网友:感觉可以吃几年啊!\",\"date\":\"2017-12-13 19:20\",\"category\":\"头条\",\"author_name\":\"深夜看影\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213192021566.html\",\"thumbnail_pic_s\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192021_5b67c366aae9e700c6b2e08a600e48c5_3_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192021_5b67c366aae9e700c6b2e08a600e48c5_1_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/07.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192021_5b67c366aae9e700c6b2e08a600e48c5_2_mwpm_03200403.jpg\"},{\"uniquekey\":\"ac395b05798e8c373f2587450356434a\",\"title\":\"中国游客游玩俄罗斯,为什么当地人民态度转变不友善\",\"date\":\"2017-12-13 19:20\",\"category\":\"头条\",\"author_name\":\"通往网络之路\",\"url\":\"http:\\/\\/mini.eastday.com\\/mobile\\/171213192020751.html\",\"thumbnail_pic_s\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192020_535cec3a2430174952ae8ff526e4e28e_1_mwpm_03200403.jpg\",\"thumbnail_pic_s02\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192020_535cec3a2430174952ae8ff526e4e28e_2_mwpm_03200403.jpg\",\"thumbnail_pic_s03\":\"http:\\/\\/02.imgmini.eastday.com\\/mobile\\/20171213\\/20171213192020_535cec3a2430174952ae8ff526e4e28e_3_mwpm_03200403.jpg\"}]},\"error_code\":0}"; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/MyApplication.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/MyApplication.java new file mode 100644 index 0000000..60a510b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/MyApplication.java @@ -0,0 +1,53 @@ +package com.fly.guilingl.gloabal; + +import android.app.Application; +import android.content.Context; +import android.os.Handler; + +import com.lzy.okgo.OkGo; +import com.lzy.okgo.cache.CacheEntity; +import com.lzy.okgo.cache.CacheMode; + +/** + * 自定义application,进行全局初始化 + * + * @author Fly + */ +public class MyApplication extends Application { + + public static Context context; + public static Handler handler; + public static int mainThreadId; + + @Override + public void onCreate() { + super.onCreate(); + context = getApplicationContext(); + handler = new Handler(); + mainThreadId = android.os.Process.myPid(); + OkGo.init(this); + + OkGo.getInstance() + //如果使用默认的 60秒,以下三行也不需要传 + .setConnectTimeout(OkGo.DEFAULT_MILLISECONDS) //全局的连接超时时间 + .setReadTimeOut(OkGo.DEFAULT_MILLISECONDS) //全局的读取超时时间 + .setWriteTimeOut(OkGo.DEFAULT_MILLISECONDS) //全局的写入超时时间 + //可以全局统一设置缓存模式,默认是不使用缓存,可以不传,具体其他模式看 github 介绍 https://github.com/jeasonlzy/ + .setCacheMode(CacheMode.FIRST_CACHE_THEN_REQUEST) + //可以全局统一设置缓存时间,默认永不过期,具体使用方法看 github 介绍 + .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE); + } + + public static Context getContext() { + return context; + } + + public static Handler getHandler() { + return handler; + } + + public static int getMainThreadId() { + return mainThreadId; + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/SysApplication.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/SysApplication.java new file mode 100644 index 0000000..f9f947f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/gloabal/SysApplication.java @@ -0,0 +1,49 @@ +package com.fly.guilingl.gloabal; + +import android.app.Activity; +import android.app.Application; + +import java.util.LinkedList; +import java.util.List; + +/** + * 一个类 用来结束所有后台activity + */ + +public class SysApplication extends Application { + //运用list来保存们每一个activity是关键 + private List mList = new LinkedList(); + //为了实现每次使用该类时不创建新的对象而创建的静态对象 + private static SysApplication instance; + //构造方法 + private SysApplication(){} + //实例化一次 + public synchronized static SysApplication getInstance(){ + if (null == instance) { + instance = new SysApplication(); + } + return instance; + } + // add Activity + public void addActivity(Activity activity) { + mList.add(activity); + } + //关闭每一个list内的activity + public void exit() { + try { + for (Activity activity:mList) { + if (activity != null) + activity.finish(); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + System.exit(0); + } + } + //杀进程 + public void onLowMemory() { + super.onLowMemory(); + System.gc(); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/http/Url.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/http/Url.java new file mode 100644 index 0000000..11fc8dd --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/http/Url.java @@ -0,0 +1,46 @@ +package com.fly.guilingl.http; + +import android.content.Context; + +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.UIUtils; + +/** + * Created by Fly on 2019/2/7/007. + */ + +public class Url { + + //默认桂林 + public static String weatherUrl = "https://weatherapi.market.xiaomi.com/wtr-v3/weather/all?latitude=0&longitude=0&locationKey=weathercn%3A101300501&days=15&appKey=weather20151024&sign=zUFJoAR2ZVrDy1vF3D07&isGlobal=false&locale=zh_cn"; + + private String keyUrl; + private static Url sInstance = null; + + public Url() { + keyUrl = PrefUtils.getString("keyurl", "xxxxx", UIUtils.getContext()); + } + + // 3公开方法获取对象 + public static Url getInstance() { + if (sInstance == null) { + synchronized (Url.class) { + if (sInstance == null) { + sInstance = new Url(); + } + } + } + return sInstance; + } + + + public String getUrl() { + return "http://" + keyUrl + ".natappfree.cc/GLGLServer/"; + } + + + //private static String keyUrl = PrefUtils.getString("keyurl", "xxxxx", UIUtils.getContext()); + //public static String keyurl = "mdra5k"; + //public static String url = "http://"+keyurl+".natappfree.cc/GLGLServer/"; + //http://tpktnw.natappfree.cc/GLGLServer/register?account=www&pwd=123 +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/manager/ThreadManager.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/manager/ThreadManager.java new file mode 100644 index 0000000..65700dd --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/manager/ThreadManager.java @@ -0,0 +1,78 @@ +package com.fly.guilingl.manager; + +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor.AbortPolicy; +import java.util.concurrent.TimeUnit; + +/** + * 线程管理器 + */ +public class ThreadManager { + + private static ThreadPool mThreadPool; + + public static ThreadPool getThreadPool() { + if (mThreadPool == null) { + synchronized (ThreadManager.class) { + if (mThreadPool == null) { + int cpuCount = Runtime.getRuntime().availableProcessors();// 获取cpu数量 + System.out.println("cup个数:" + cpuCount); + + // int threadCount = cpuCount * 2 + 1;//线程个数 + int threadCount = 10; + mThreadPool = new ThreadPool(threadCount, threadCount, 1L); + } + } + } + + return mThreadPool; + } + + // 线程池 + public static class ThreadPool { + + private int corePoolSize;// 核心线程数 + private int maximumPoolSize;// 最大线程数 + private long keepAliveTime;// 休息时间 + + private ThreadPoolExecutor executor; + + private ThreadPool(int corePoolSize, int maximumPoolSize, + long keepAliveTime) { + this.corePoolSize = corePoolSize; + this.maximumPoolSize = maximumPoolSize; + this.keepAliveTime = keepAliveTime; + } + + // 线程池几个参数的理解: + // 比如去火车站买票, 有10个售票窗口, 但只有5个窗口对外开放. 那么对外开放的5个窗口称为核心线程数, + // 而最大线程数是10个窗口. + // 如果5个窗口都被占用, 那么后来的人就必须在后面排队, 但后来售票厅人越来越多, 已经人满为患, 就类似于线程队列已满. + // 这时候火车站站长下令, 把剩下的5个窗口也打开, 也就是目前已经有10个窗口同时运行. 后来又来了一批人, + // 10个窗口也处理不过来了, 而且售票厅人已经满了, 这时候站长就下令封锁入口,不允许其他人再进来, 这就是线程异常处理策略. + // 而线程存活时间指的是, 允许售票员休息的最长时间, 以此限制售票员偷懒的行为. + public void execute(Runnable r) { + if (executor == null) { + executor = new ThreadPoolExecutor(corePoolSize, + maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, + new LinkedBlockingQueue(), + Executors.defaultThreadFactory(), new AbortPolicy()); + // 参1:核心线程数;参2:最大线程数;参3:线程休眠时间;参4:时间单位;参5:线程队列;参6:生产线程的工厂;参7:线程异常处理策略 + } + + // 线程池执行一个Runnable对象, 具体运行时机线程池说了算 + executor.execute(r); + } + + // 取消任务 + public void cancel(Runnable r) { + if (executor != null) { + // 从线程队列中移除对象 + executor.getQueue().remove(r); + } + } + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/provider/CollectProvider.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/provider/CollectProvider.java new file mode 100644 index 0000000..f8902c0 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/provider/CollectProvider.java @@ -0,0 +1,114 @@ +package com.fly.guilingl.provider; + +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.support.annotation.Nullable; + +import com.fly.guilingl.db.CollectionOpenHelper; + + +/** + * Created by Fly on 2017/3/4. + */ + +public class CollectProvider extends ContentProvider { + private CollectionOpenHelper mHelper; + ; + private SQLiteDatabase db; + //private static final String TABLE_COLLECT = "collect"; + private static final String authority = "com.fly.guilingl"; + public static final Uri BASE_URI = Uri.parse("content://" + authority); + + static final int CODE_COLLECT_INSERT = 0; + static final int CODE_COLLECT_QUERY = 1; + static final int CODE_COLLECT_UPDATE = 2; + static final int CODE_COLLECT_DELETE = 3; + + UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); + + { + //添加匹配规则 + matcher.addURI(authority, "collect/insert", CODE_COLLECT_INSERT); + matcher.addURI(authority, "collect/query", CODE_COLLECT_QUERY); + matcher.addURI(authority, "collect/update", CODE_COLLECT_UPDATE); + matcher.addURI(authority, "collect/delete", CODE_COLLECT_DELETE); + } + + @Override + public boolean onCreate() { + mHelper = new CollectionOpenHelper(getContext()); + db = mHelper.getWritableDatabase(); + return false; + } + + @Nullable + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + switch (matcher.match(uri)) { + //这个是表示不同的表,根据id判断出不同的表然后选择插入。 + case CODE_COLLECT_QUERY: + Cursor cursor = db.query("collection", projection, selection, selectionArgs, null, null, sortOrder); + //监视uri上数据改变一个的内容观察者 + //只要该uri上的数据改变,内容观察者会立刻发现,重新查询 + cursor.setNotificationUri(getContext().getContentResolver(), BASE_URI); + return cursor; + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } + + @Nullable + @Override + public String getType(Uri uri) { + return null; + } + + @Nullable + @Override + public Uri insert(Uri uri, ContentValues values) { + switch (matcher.match(uri)) { + case CODE_COLLECT_INSERT: + long rawId = db.insert("collection", null, values); + //插入失败 + if (rawId == -1) { + return null; + } else { + //这个是自己创建的数据库只能调用notifychange方法,让其帮忙刷新。 + getContext().getContentResolver().notifyChange(BASE_URI, null); + //把返回的行id,拼接在uri的后面,然后返回 + return ContentUris.withAppendedId(uri, rawId); + } + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + switch (matcher.match(uri)) { + case CODE_COLLECT_DELETE: + int number = db.delete("collection", selection, selectionArgs); + getContext().getContentResolver().notifyChange(BASE_URI, null); + return number; + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + switch (matcher.match(uri)) { + case CODE_COLLECT_UPDATE: + int number = db.update("collection", values, selection, selectionArgs); + getContext().getContentResolver().notifyChange(BASE_URI, null); + return number; + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/provider/HistoryProvider.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/provider/HistoryProvider.java new file mode 100644 index 0000000..42ad44e --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/provider/HistoryProvider.java @@ -0,0 +1,114 @@ +package com.fly.guilingl.provider; + +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.support.annotation.Nullable; + +import com.fly.guilingl.db.HistoryOpenHelper; + + +/** + * Created by Fly on 2017/3/4. + */ + +public class HistoryProvider extends ContentProvider { + private HistoryOpenHelper mHelper; + ; + private SQLiteDatabase db; + //private static final String TABLE_COLLECT = "collect"; + private static final String authority = "com.fly.guilinglhistory"; + public static final Uri BASE_URI = Uri.parse("content://" + authority); + + static final int CODE_HISTORY_INSERT = 0; + static final int CODE_HISTORY_QUERY = 1; + static final int CODE_HISTORY_UPDATE = 2; + static final int CODE_HISTORY_DELETE = 3; + + UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); + + { + //添加匹配规则 + matcher.addURI(authority, "history/insert", CODE_HISTORY_INSERT); + matcher.addURI(authority, "history/query", CODE_HISTORY_QUERY); + matcher.addURI(authority, "history/update", CODE_HISTORY_UPDATE); + matcher.addURI(authority, "history/delete", CODE_HISTORY_DELETE); + } + + @Override + public boolean onCreate() { + mHelper = new HistoryOpenHelper(getContext()); + db = mHelper.getWritableDatabase(); + return false; + } + + @Nullable + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + switch (matcher.match(uri)) { + //这个是表示不同的表,根据id判断出不同的表然后选择插入。 + case CODE_HISTORY_QUERY: + Cursor cursor = db.query("history", projection, selection, selectionArgs, null, null, sortOrder); + //监视uri上数据改变一个的内容观察者 + //只要该uri上的数据改变,内容观察者会立刻发现,重新查询 + cursor.setNotificationUri(getContext().getContentResolver(), BASE_URI); + return cursor; + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } + + @Nullable + @Override + public String getType(Uri uri) { + return null; + } + + @Nullable + @Override + public Uri insert(Uri uri, ContentValues values) { + switch (matcher.match(uri)) { + case CODE_HISTORY_INSERT: + long rawId = db.insert("history", null, values); + //插入失败 + if (rawId == -1) { + return null; + } else { + //这个是自己创建的数据库只能调用notifychange方法,让其帮忙刷新。 + getContext().getContentResolver().notifyChange(BASE_URI, null); + //把返回的行id,拼接在uri的后面,然后返回 + return ContentUris.withAppendedId(uri, rawId); + } + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + switch (matcher.match(uri)) { + case CODE_HISTORY_DELETE: + int number = db.delete("history", selection, selectionArgs); + getContext().getContentResolver().notifyChange(BASE_URI, null); + return number; + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + switch (matcher.match(uri)) { + case CODE_HISTORY_UPDATE: + int number = db.update("history", values, selection, selectionArgs); + getContext().getContentResolver().notifyChange(BASE_URI, null); + return number; + default: + throw new IllegalArgumentException("未识别的uri:" + uri); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/CateLogActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/CateLogActivity.java new file mode 100644 index 0000000..5f9d528 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/CateLogActivity.java @@ -0,0 +1,93 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.webkit.WebResourceRequest; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class CateLogActivity extends AppCompatActivity { + + private Toolbar mToolbar; + private WebView webView; + private String mUrl; + private String mTitle; + private String mUniquekey; + private int mType; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_catelog); + StatusBarUtils.StatusBarLightMode(this); + + getIntentData(); + setSupportActionBar(mToolbar); + mToolbar = findViewById(R.id.toolbar); + webView = findViewById(R.id.wv_catelog); + mToolbar.setTitle(mTitle); + mToolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + initWebView(); + + } + + private void getIntentData() { + Intent intent = getIntent(); + Bundle bundle = intent.getBundleExtra("bundle"); + mTitle = bundle.getString("title"); + mUrl = bundle.getString("url"); + mUniquekey = bundle.getString("uniquekey"); + mType = bundle.getInt("type"); + + } + private void initWebView() { + webView.loadUrl(mUrl); + //声明WebSettings子类 + WebSettings webSettings = webView.getSettings(); + + //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript + webSettings.setJavaScriptEnabled(true); + + //设置自适应屏幕,两者合用 + webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小 + webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小 + + //缩放操作 + webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。 + webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放 + webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件 + + //其他细节操作 + webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存 + webSettings.setAllowFileAccess(true); //设置可以访问文件 + webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 + webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片 + webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式 + webView.setWebViewClient(new WebViewClient(){ + @Override + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + return super.shouldOverrideUrlLoading(view, request); + } + }); + + } + + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/CollectionActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/CollectionActivity.java new file mode 100644 index 0000000..f4b0312 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/CollectionActivity.java @@ -0,0 +1,142 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.db.SimpleQueryHandler; +import com.fly.guilingl.db.dao.CollectionDao; +import com.fly.guilingl.provider.CollectProvider; +import com.fly.guilingl.ui.adapter.CollectionAdapter; +import com.fly.guilingl.ui.dialog.ConfirmDialog; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; + + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class CollectionActivity extends AppCompatActivity { + private ListView listView; + private CollectionAdapter mAdater; + private SimpleQueryHandler simpleQueryHandler; + private TextView tvDelete; + private TextView tvShow; + private TextView tvToolbarTitle; + private CollectionDao mCollectionDao; + private String mAccount; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_collection); + StatusBarUtils.StatusBarLightMode(this); + mAccount = PrefUtils.getString("account", "admin", CollectionActivity.this); + mCollectionDao = mCollectionDao.getInstance(this); + initView(); + simpleQueryHandler = new SimpleQueryHandler(this.getContentResolver()); + mAdater = new CollectionAdapter(this, null); + setSimpleQueryHandler(); + listView.setAdapter(mAdater); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + + Intent intent = new Intent(CollectionActivity.this, DetailActivity.class); + Intent shopIntent = new Intent(CollectionActivity.this, ShopDetailActivity3.class); + Cursor cursor = (Cursor) mAdater.getItem(position); + Collection news = Collection.createFromCursor(cursor); + Bundle bundle = new Bundle(); + + bundle.putString("title", news.title); + bundle.putString("uniquekey", news.uniquekey); + bundle.putString("url", news.url); + bundle.putString("leibie", news.leibie); + bundle.putString("imageurl", news.imageUrl); + + intent.putExtra("bundle", bundle); + shopIntent.putExtra("bundle", bundle); + + if ("跟团".equals(news.leibie) + || "商店首页".equals(news.leibie) + || "推荐".equals(news.leibie) + || "特产".equals(news.leibie) + || "自由行".equals(news.leibie) + || "一日行".equals(news.leibie) + || "门票".equals(news.leibie) + || "多日游".equals(news.leibie) + || "玩乐".equals(news.leibie)) { + startActivity(shopIntent); + } else { + startActivity(intent); + } + } + }); + + tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (mCollectionDao.isEmpty(mAccount) == true) { + ToastUtils.showToast(CollectionActivity.this, "还没有收藏记录哦!"); + } else { + ConfirmDialog.showDialog(CollectionActivity.this, "清空收藏记录", "你确定要删除吗?", new ConfirmDialog.OnConfirmListener() { + @Override + public void confirm() { + mCollectionDao.deleteAll(mAccount); + tvShow.setVisibility(View.VISIBLE); + tvShow.setText("暂时没有收藏哦!!!"); + } + + @Override + public void cancel() { + } + }); + } + } + }); + + } + + private void setSimpleQueryHandler() { + simpleQueryHandler.startQuery(0, mAdater, Uri.parse(CollectProvider.BASE_URI + "/collect/query"), + null, + "account = ?", + new String[]{mAccount}, + "_id desc"); + if (mCollectionDao.isEmpty(mAccount) == true) { + tvShow.setVisibility(View.VISIBLE); + tvShow.setText("暂时没有收藏哦!!!"); + } else { + tvShow.setVisibility(View.INVISIBLE); + } + } + + + private void initView() { + tvToolbarTitle = findViewById(R.id.tv_toolbar_title); + tvShow = findViewById(R.id.tv_show); + tvDelete = (TextView) findViewById(R.id.tv_delete_collect); + tvToolbarTitle.setText("我的收藏记录"); + tvDelete.setText("清空收藏记录"); + + listView = (ListView) findViewById(R.id.lv_colleaction); + android.support.v7.widget.Toolbar toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ComentActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ComentActivity.java new file mode 100644 index 0000000..be367a4 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ComentActivity.java @@ -0,0 +1,33 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * Created by Fly on 2019/1/26/026. + */ + +public class ComentActivity extends AppCompatActivity { + + private Toolbar toolbar; + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_coment); + StatusBarUtils.StatusBarLightMode(this); + + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ConfirmActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ConfirmActivity.java new file mode 100644 index 0000000..ecf5298 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ConfirmActivity.java @@ -0,0 +1,120 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.DingdanDao; +import com.fly.guilingl.ui.dialog.ConfirmDialog; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by Fly on 2019/1/13/013. + */ + +public class ConfirmActivity extends AppCompatActivity { + + private String mTitle; + private String mUrl; + private String mUniquekey; + private String mLeiBie; + + private String mPrice; + private String mImageurl; + + private int mAmount; + private String mName; + + private ImageView ivTou; + private TextView tvTitle; + private TextView tvAmount; + private TextView tvAllPrice; + private Button btnLogin; + private DingdanDao mDao; + + private Toolbar toolbar; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_confirm); + StatusBarUtils.StatusBarLightMode(this); + mDao = DingdanDao.getInstance(this); + getIntentData(); + + initView(); + } + + private void initView() { + ivTou = findViewById(R.id.iv_confirm_tou); + tvTitle = findViewById(R.id.tv_confirm_title); + tvAmount = findViewById(R.id.tv_confirm_amount); + tvAllPrice = findViewById(R.id.tv_confirm_price); + Glide.with(this).load(mImageurl).into(ivTou); + tvTitle.setText(mTitle); + tvAmount.setText(mAmount+" x "+mPrice); + tvAllPrice.setText(Integer.parseInt(mPrice)*mAmount+"元"); + btnLogin = findViewById(R.id.btn_confirm_login); + btnLogin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ConfirmDialog.showDialog(ConfirmActivity.this, "你确定吗?", Integer.parseInt(mPrice)*mAmount+"元", new ConfirmDialog.OnConfirmListener() { + @Override + public void confirm() { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + ToastUtils.showToast(ConfirmActivity.this,"付款成功!"); + String time = df.format(new Date())+""; + mDao.add(mUniquekey,mUrl,mTitle,mLeiBie,mImageurl,mAmount,mPrice,time,mName); + //finish(); + //System.out.println();// new Date()为获取当前系统时间 + } + + @Override + public void cancel() { + ToastUtils.showToast(ConfirmActivity.this,"未付款!"); + } + }); + } + }); + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } + + private void getIntentData() { + Intent intent = getIntent(); + Bundle bundle = intent.getBundleExtra("bundle"); + mTitle = bundle.getString("title"); + mUrl = bundle.getString("url"); + mUniquekey = bundle.getString("uniquekey"); + mLeiBie = bundle.getString("leibie"); + mPrice = bundle.getString("price"); + mImageurl = bundle.getString("imageurl"); + mAmount = bundle.getInt("amount",1); + mName = bundle.getString("name"); + +// Log.e("--ConfirmActivity--",mTitle); +// Log.e("--ConfirmActivity--",mUrl); +// Log.e("--ConfirmActivity--",mUniquekey); +// Log.e("--ConfirmActivity--",mLeiBie); +// Log.e("--ConfirmActivity--",mPrice); +// Log.e("--ConfirmActivity--",mImageurl); +// Log.e("--ConfirmActivity--",mAmount+""); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/DetailActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/DetailActivity.java new file mode 100644 index 0000000..9a8a1b1 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/DetailActivity.java @@ -0,0 +1,269 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.View; +import android.webkit.WebResourceRequest; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.ImageView; +import android.widget.ProgressBar; + +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.CollectionDao; +import com.fly.guilingl.db.dao.HistoryDao; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.manager.ThreadManager; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.utils.UIUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.cache.CacheMode; +import com.lzy.okgo.callback.StringCallback; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Fly on 2019/1/6/006. + */ + +public class DetailActivity extends AppCompatActivity { + private Toolbar mToolbar; + private String mTitle; + private String mUrl; + private String mUniquekey; + private String mLeiBie; + private String mImageUrl; + private ImageView ivShare; + private ImageView ivFavorites; + private ImageView ivComment; + private WebView webView; + private boolean isCollection; + private ProgressBar pbDetail; + + private CollectionDao mCollectionDao; + private HistoryDao mHistoryDao; + + private String mAccount; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_detail1); + StatusBarUtils.StatusBarLightMode(DetailActivity.this); + mCollectionDao = mCollectionDao.getInstance(this); + mHistoryDao = mHistoryDao.getInstance(this); + mAccount = PrefUtils.getString("account", "admin", DetailActivity.this); + getIntentData(); + initView(); + if (!mAccount.equals("游客")) { + initHistory(); + initCollection(); + } else { + ivFavorites.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ToastUtils.showToast(DetailActivity.this, "游客模式下不能进行收藏,请先登陆!"); + } + }); + } + + + webView = findViewById(R.id.wv_detail); + pbDetail = findViewById(R.id.pb_detail); + UIUtils.getHandler().postDelayed(new Runnable() { + @Override + public void run() { + pbDetail.setVisibility(View.INVISIBLE); + //wvDetail.loadUrl(mUrl); + initWebView(); + } + }, 1000); + } + + + private void initWebView() { + webView.loadUrl(mUrl); + //声明WebSettings子类 + WebSettings webSettings = webView.getSettings(); + + //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript + webSettings.setJavaScriptEnabled(true); + + //设置自适应屏幕,两者合用 + webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小 + webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小 + + //缩放操作 + webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。 + webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放 + webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件 + + //其他细节操作 + webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存 + webSettings.setAllowFileAccess(true); //设置可以访问文件 + webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 + webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片 + webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式 + webView.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + return super.shouldOverrideUrlLoading(view, request); + } + }); + + } + + /** + * 阅读历史 + */ + private void initHistory() { + ThreadManager.getThreadPool().execute(new Runnable() { + @Override + public void run() { + Log.e("是否已经添加历史数据库:",mHistoryDao.find(mUniquekey, mAccount)+""); + if (!mHistoryDao.find(mUniquekey, mAccount)) { + mHistoryDao.add(mAccount, mUniquekey, mUrl, mTitle, mLeiBie, mImageUrl, getNowTime()); + postByOkGo(Url.getInstance().getUrl() + "history", "history"); + } + } + }); + } + + /** + * 获取时间 + */ + private String getNowTime() { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + System.out.println(df.format(new Date()));// new Date()为获取当前系统时间 + return df.format(new Date()) + ""; + } + + /** + * 收藏 + */ + private void initCollection() { + + //开启一个线程池,查询数据库中所有收藏的新闻 + ThreadManager.getThreadPool().execute(new Runnable() { + @Override + public void run() { + isCollection = mCollectionDao.find(mUniquekey, mAccount); + Log.e("是否已经收藏:",isCollection+""); + UIUtils.runOnUIThread(new Runnable() { + @Override + public void run() { + if (isCollection) { + ivFavorites.setImageResource(R.mipmap.favorites_press); + } else { + ivFavorites.setImageResource(R.mipmap.favorites); + } + } + }); + } + }); + + ivFavorites.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (isCollection) { + ivFavorites.setImageResource(R.mipmap.favorites); + mCollectionDao.deleteByUniquekey(mUniquekey, mAccount); + isCollection = false; + } else { + ivFavorites.setImageResource(R.mipmap.favorites_press); + mCollectionDao.add(mAccount, mUniquekey, mUrl, mTitle, mLeiBie, mImageUrl, getNowTime()); + isCollection = true; + } + } + }); + } + + private void getIntentData() { + Intent intent = getIntent(); + Bundle bundle = intent.getBundleExtra("bundle"); + mTitle = bundle.getString("title"); + mUrl = bundle.getString("url"); + mUniquekey = bundle.getString("uniquekey"); + mLeiBie = bundle.getString("leibie"); + mImageUrl = bundle.getString("imageurl"); + } + + private void initView() { + setSupportActionBar(mToolbar); + mToolbar = findViewById(R.id.toolbar); + ivComment = findViewById(R.id.iv_comment); + ivFavorites = findViewById(R.id.iv_favorites); + ivShare = findViewById(R.id.iv_share); + initToolbar(); + initComent(); + initShare(); + + } + + private void initShare() { + ivShare.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ToastUtils.showToast(DetailActivity.this, "你点击了分享"); + } + }); + } + + private void initComent() { + ivComment.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(DetailActivity.this, ComentActivity.class); + + startActivity(intent); + //ToastUtils.showToast(DetailActivity.this,"你点击了评论"); + } + }); + } + + private void initToolbar() { + mToolbar.setTitle(mTitle); + mToolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + private void postByOkGo(String url, String cacheKey) { + OkGo.post(url) + .tag(this) + .cacheKey(cacheKey) + .cacheMode(CacheMode.DEFAULT) + .params("account", mAccount) + .params("uniquekey", mUniquekey) + .params("url", mUrl) + .params("title", mTitle) + .params("leibie", mLeiBie) + .params("imageurl", mImageUrl) + .params("time", getNowTime()) + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + ToastUtils.showToast(DetailActivity.this, s); + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/DingDanActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/DingDanActivity.java new file mode 100644 index 0000000..8b56755 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/DingDanActivity.java @@ -0,0 +1,128 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.DingDanBean; +import com.fly.guilingl.db.dao.DingdanDao; +import com.fly.guilingl.ui.adapter.DingDanAdapter; +import com.fly.guilingl.ui.dialog.ConfirmDialog; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/13/013. + */ + +public class DingDanActivity extends AppCompatActivity { + + private ArrayList mList; + private DingdanDao mDao; + private Toolbar toolbar; + private WrapRecyclerView mRv; + private DingDanAdapter mAdapter; + private TextView tvDeleteAll; + private TextView tvDefaultPage; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_dingdan); + StatusBarUtils.StatusBarLightMode(DingDanActivity.this); + tvDefaultPage = findViewById(R.id.tv_dingdan_show); + + getDataFromSQL(); + initView(); + } + + private void getDataFromSQL() { + mDao = DingdanDao.getInstance(this); + mList = mDao.findAll(); + //Log.e("--DingDanActivity--",mList+""); + initDefaultPage(); + } + + private void initView() { + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + initRv(); + tvDeleteAll = findViewById(R.id.tv_delete_all); + tvDeleteAll.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //ToastUtils.showToast(DingDanActivity.this,"清空"); + if (mList.size() == 0){ + ToastUtils.showToast(DingDanActivity.this,"还没有订单哦!"); + }else { + ConfirmDialog.showDialog(DingDanActivity.this, "确认清空订单", "清空之后可以从电脑端订单回收站恢复", new ConfirmDialog.OnConfirmListener() { + @Override + public void confirm() { + mDao.deleteAll(); + mAdapter.onAllRemove(); + initDefaultPage(); + } + @Override + public void cancel() { + + } + });} + } + }); + } + + + + private void initDefaultPage() { + if (mList.size() == 0){ + tvDefaultPage.setVisibility(View.VISIBLE); + }else { + tvDefaultPage.setVisibility(View.INVISIBLE); + } + } + + private void initRv() { + mAdapter = new DingDanAdapter(mList, this); + mRv = findViewById(R.id.wrv); + mRv.setLayoutManager(new LinearLayoutManager(this)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new DingDanAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, final int position) { + //ToastUtils.showToast(DingDanActivity.this,"删除"+position); + showDeleteDialog(position); + } + }); + } + + private void showDeleteDialog(final int position) { + ConfirmDialog.showDialog(DingDanActivity.this, "确认删除订单", "删除之后可以从电脑端订单回收站恢复", new ConfirmDialog.OnConfirmListener() { + @Override + public void confirm() { + mDao.deleteByTime(mList.get(position).time); + mAdapter.onItemRemove(position); + initDefaultPage(); + } + + @Override + public void cancel() { + + } + }); + } + + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/GuideActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/GuideActivity.java new file mode 100644 index 0000000..82d5491 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/GuideActivity.java @@ -0,0 +1,165 @@ +package com.fly.guilingl.ui.activity; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Color; +import android.os.Build; +import android.os.Bundle; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.LinearLayout; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * 闪屏页面 + */ + +public class GuideActivity extends AppCompatActivity { + private int[] mImageIds = new int[]{R.mipmap.ic_s01, R.mipmap.ic_s02, + R.mipmap.ic_s03, R.mipmap.ic_s04}; + private ViewPager mViewPager; + private LinearLayout llContainer; + private int mPreviousPos;// 上一个页面位置 + private Button butEnter; + + int type = 0; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + StatusBarUtils.StatusBarLightMode(this); + setContentView(R.layout.activity_guide); + + getIntentData(); + mViewPager = (ViewPager) findViewById(R.id.vp_pager); + llContainer = (LinearLayout) findViewById(R.id.ll_container); + + mViewPager.setAdapter(new MyAdapter()); + mViewPager.setCurrentItem(0); + + butEnter = (Button) findViewById(R.id.btn_enter); + butEnter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (type == 0) { + startActivity(new Intent(GuideActivity.this, LoginActivity.class)); + } + finish(); + } + }); + // 设置滑动监听 + mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + + // 某个页面被选中 + @Override + public void onPageSelected(int position) { + + if (position == mImageIds.length - 1) {// 最后页面显示开始体验 + butEnter.setVisibility(View.VISIBLE); + } else { + butEnter.setVisibility(View.GONE); + } + // 更新小圆点 + llContainer.getChildAt(position).setEnabled(true);// 将选中的页面的圆点设置为红色 + // 将上一个圆点变成灰色 + llContainer.getChildAt(mPreviousPos).setEnabled(false); + // 更新上一个页面位置 + mPreviousPos = position; + } + + @Override + public void onPageScrolled(int position, float positionOffset, + int positionOffsetPixels) { + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + // 动态添加5个小圆点 + for (int i = 0; i < mImageIds.length; i++) { + ImageView view = new ImageView(this); + view.setImageResource(R.drawable.shape_point_selector); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT); + + if (i != 0) {// 从第2个圆点开始设置左边距, 保证圆点之间的间距 + params.leftMargin = 6; + view.setEnabled(false);// 设置不可用, 变为灰色圆点 + } + view.setLayoutParams(params); + + llContainer.addView(view); + } + } + + private void getIntentData() { + Intent intent = getIntent(); + type = intent.getIntExtra("type", 0); + } + + class MyAdapter extends PagerAdapter { + + // 返回item的个数 + @Override + public int getCount() { + return mImageIds.length; + //return Integer.MAX_VALUE; + } + + // 判断当前要展示的view和返回的object是否是一个对象, 如果是,才展示 + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + // 类似getView方法, 初始化每个item的布局, viewpager默认自动加载前一张和后一张图片, 保证始终保持3张图片, + // 剩余的都需要销毁 + @Override + public Object instantiateItem(ViewGroup container, int position) { + + //int pos = position % mImageIds.length; + + ImageView view = new ImageView(getApplicationContext()); + view.setBackgroundResource(mImageIds[position]); + + // 将item的布局添加给容器 + container.addView(view); + return view;// 返回item的布局对象 + } + + // item销毁的回调方法 + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + // 从容器中移除布局对象 + container.removeView((View) object); + } + + } + + //版本判断 + public void setImgTransparent(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS + | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(Color.TRANSPARENT); + window.setNavigationBarColor(Color.TRANSPARENT); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/HistoryActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/HistoryActivity.java new file mode 100644 index 0000000..594e3b8 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/HistoryActivity.java @@ -0,0 +1,192 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.Collection; +import com.fly.guilingl.bean.History; +import com.fly.guilingl.db.SimpleQueryHandler; +import com.fly.guilingl.db.dao.HistoryDao; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.provider.HistoryProvider; +import com.fly.guilingl.ui.adapter.CollectionAdapter; +import com.fly.guilingl.ui.dialog.ConfirmDialog; +import com.fly.guilingl.utils.ParseHistoryDataUtils; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.cache.CacheMode; +import com.lzy.okgo.callback.StringCallback; + +import java.util.ArrayList; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class HistoryActivity extends AppCompatActivity { + private ListView listView; + private CollectionAdapter mAdater; + private SimpleQueryHandler simpleQueryHandler; + private TextView tvDelete; + private TextView tvShow; + private TextView tvToolbarTitle; + private HistoryDao mHistoryDao; + private String mAccount; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_collection); + StatusBarUtils.StatusBarLightMode(this); + mAccount = PrefUtils.getString("account", "admin", HistoryActivity.this); + mHistoryDao = mHistoryDao.getInstance(this); + initView(); + simpleQueryHandler = new SimpleQueryHandler(this.getContentResolver()); + mAdater = new CollectionAdapter(this, null); + setSimpleQueryHandler(); + listView.setAdapter(mAdater); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + + Intent intent = new Intent(HistoryActivity.this, DetailActivity.class); + Intent shopIntent = new Intent(HistoryActivity.this, ShopDetailActivity3.class); + Cursor cursor = (Cursor) mAdater.getItem(position); + Collection news = Collection.createFromCursor(cursor); + Bundle bundle = new Bundle(); + + bundle.putString("title", news.title); + bundle.putString("uniquekey", news.uniquekey); + bundle.putString("url", news.url); + bundle.putString("leibie", news.leibie); + bundle.putString("imageurl", news.imageUrl); + + intent.putExtra("bundle", bundle); + shopIntent.putExtra("bundle", bundle); + + if ("跟团".equals(news.leibie) + || "商店首页".equals(news.leibie) + || "推荐".equals(news.leibie) + || "特产".equals(news.leibie) + || "自由行".equals(news.leibie) + || "一日行".equals(news.leibie) + || "门票".equals(news.leibie) + || "多日游".equals(news.leibie) + || "玩乐".equals(news.leibie)) { + startActivity(shopIntent); + } else { + startActivity(intent); + } + } + }); + + tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (mHistoryDao.isEmpty(mAccount) == true) { + ToastUtils.showToast(HistoryActivity.this, "还没有历史记录哦!"); + } else { + ConfirmDialog.showDialog(HistoryActivity.this, "清空历史记录", "你确定要删除吗?", new ConfirmDialog.OnConfirmListener() { + @Override + public void confirm() { + mHistoryDao.deleteAll(mAccount); + OkGo.post(Url.getInstance().getUrl() + "deleteHistory") + .tag(this) + .cacheKey("deleteHistory") + .cacheMode(CacheMode.DEFAULT) + .params("account", mAccount) + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + ToastUtils.showToast(HistoryActivity.this, s); + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + } + }); + tvShow.setVisibility(View.VISIBLE); + tvShow.setText("暂时没有历史哦!!!"); + } + @Override + public void cancel() { + } + }); + } + } + }); + + } + + private void setSimpleQueryHandler() { + simpleQueryHandler.startQuery(0, mAdater, Uri.parse(HistoryProvider.BASE_URI + "/history/query"), + null, + "account = ?", + new String[]{mAccount}, + "_id desc"); + if (mHistoryDao.isEmpty(mAccount) == true) { + OkGo.post(Url.getInstance().getUrl() + "getHistory") + .tag(this) + .cacheKey("getHistory") + .cacheMode(CacheMode.DEFAULT) + .params("account", mAccount) + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + if (s.trim().length() > 30) { + ArrayList list = ParseHistoryDataUtils.getBean(s.trim()); + for (History h : list) { + mHistoryDao.add(h.account, h.uniquekey, h.url, h.title, h.leibie, h.imageUrl, h.time); + tvShow.setVisibility(View.INVISIBLE);//隐藏暂时没有历史页面 + } + } + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + } + }); + } else { + tvShow.setVisibility(View.INVISIBLE); + } + + if (mHistoryDao.isEmpty(mAccount) == true) { + tvShow.setVisibility(View.VISIBLE); + tvShow.setText("暂时没有历史哦!!!"); + } + } + + + private void initView() { + tvToolbarTitle = findViewById(R.id.tv_toolbar_title); + tvShow = findViewById(R.id.tv_show); + tvDelete = (TextView) findViewById(R.id.tv_delete_collect); + tvToolbarTitle.setText("我的历史记录"); + tvDelete.setText("清空历史记录"); + + listView = (ListView) findViewById(R.id.lv_colleaction); + android.support.v7.widget.Toolbar toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/JinNangActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/JinNangActivity.java new file mode 100644 index 0000000..11d5e32 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/JinNangActivity.java @@ -0,0 +1,103 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.ui.fragment.jinnangfragment.FragmentFactory; +import com.fly.guilingl.utils.StatusBarUtils; + +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; + +/** + * Created by Fly on 2019/1/7/007. + */ + +public class JinNangActivity extends AppCompatActivity { + + private ViewPager vp; + private TabLayout tabLayout; + private MyPagerAdapter adapter; + private String[] title = { + "锦囊", + "游记", + "专栏", + "问答", + "结伴", + "张家界视频", + }; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_jinnang); + this.setRequestedOrientation(SCREEN_ORIENTATION_PORTRAIT); + StatusBarUtils.StatusBarLightMode(this); + initViews(); + } + + private void initViews() { + initTooBar(); + vp = findViewById(R.id.vp_jinnang); + tabLayout = findViewById(R.id.tabLayout_jinnang); + tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); + tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); + tabLayout.setTabTextColors(Color.BLACK, Color.RED); + adapter = new MyPagerAdapter(getSupportFragmentManager()); + vp.setAdapter(adapter); + tabLayout.setupWithViewPager(vp); + Intent intent = getIntent(); + int pos = intent.getIntExtra("pos",0); + vp.setCurrentItem(pos); + //Log.e("---pos---",pos+""); + } + + private Toolbar toolbar; + private void initTooBar() { + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } + + class MyPagerAdapter extends FragmentPagerAdapter { + + public MyPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public CharSequence getPageTitle(int position) { + return title[position]; + } + + @Override + public Fragment getItem(int position) { +// Fragment f = new MyFragmentMain(); +// Bundle bundle = new Bundle(); +// bundle.putString("title", title[position]); +// f.setArguments(bundle); + BaseFragment f = FragmentFactory.createFragment(position); + return f; + } + + @Override + public int getCount() { + return title.length; + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/LoginActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/LoginActivity.java new file mode 100644 index 0000000..c682467 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/LoginActivity.java @@ -0,0 +1,224 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.RegisterDao; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.ui.dialog.ForgetPwdDialog; +import com.fly.guilingl.ui.dialog.InputDialog; +import com.fly.guilingl.utils.MD5Utils; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.StringCallback; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * 登陆 + */ + +public class LoginActivity extends AppCompatActivity implements View.OnClickListener { + private Button btnLogin; + private EditText etAccount; + private EditText etPwd; + private TextView tvRegister; + private CheckBox checkBox; + private TextView tvForget; + private CheckBox cbFw; + private TextView tvYouKeLogin; + RegisterDao mRegisterDao; + + private String mUrl; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + StatusBarUtils.StatusBarLightMode(this); + mRegisterDao = RegisterDao.getInstance(this); + initKeyUrl(); + initView(); + initPwd(); + initListener(); + initYouKeLogin(); + } + + private void initYouKeLogin() { + tvYouKeLogin = findViewById(R.id.tv_youke_login); + tvYouKeLogin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + PrefUtils.putBoolean("pwdischeck", false, LoginActivity.this); + PrefUtils.putString("account", "游客", LoginActivity.this); + //PrefUtils.putString("pwd", "950207", LoginActivity.this); + + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + finish(); + } + }); + } + + private void initKeyUrl() { + TextView tv = findViewById(R.id.tv_keyurl); + tv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + InputDialog.showDialog(LoginActivity.this, new InputDialog.OnConfirmListener() { + @Override + public void confirm(String key) { + if (!TextUtils.isEmpty(key)) { + ToastUtils.showToast(LoginActivity.this, key); + PrefUtils.putString("keyurl", key, LoginActivity.this); + mUrl = "http://" + key + ".natappfree.cc/GLGLServer/"; + } + } + + @Override + public void cancel() { + } + }); + } + }); + } + + //判断是否记录密码 + private void initPwd() { + boolean isCheck = PrefUtils.getBoolean("pwdischeck", false, this); + if (isCheck) { + checkBox.setChecked(true); + etAccount.setText(PrefUtils.getString("account", "", LoginActivity.this)); + etPwd.setText(PrefUtils.getString("pwd", "", LoginActivity.this)); + } else { + checkBox.setChecked(false); + } + } + + private String account; + private String pwd; + + private void initListener() { + btnLogin.setOnClickListener(this); + tvRegister.setOnClickListener(this); + checkBox.setOnClickListener(this); + tvForget.setOnClickListener(this); + cbFw.setOnClickListener(this); + } + + private void initView() { + btnLogin = (Button) findViewById(R.id.bt_login); + etAccount = (EditText) findViewById(R.id.et_login_account); + etPwd = (EditText) findViewById(R.id.et_login_pwd); + tvRegister = (TextView) findViewById(R.id.tv_login_register); + checkBox = (CheckBox) findViewById(R.id.checkBox); + tvForget = (TextView) findViewById(R.id.tv_login_forget); + cbFw = (CheckBox) findViewById(R.id.tv_fuwu); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.bt_login: + account = etAccount.getText().toString().trim(); + pwd = etPwd.getText().toString().trim(); + + if (mUrl == null) { + mUrl = Url.getInstance().getUrl(); + } + + ToastUtils.showToast(LoginActivity.this, "key:" + mUrl); + if (!TextUtils.isEmpty(account) && !TextUtils.isEmpty(pwd)) { + if (account.equals("admin") && MD5Utils.encode(pwd).equals("ee13bab646ca4b001c01b4597e4dd0d4")) {//"950207"MD5加密 + startActivity(new Intent(LoginActivity.this, MainActivity.class)); + PrefUtils.putString("account", "admin", LoginActivity.this); + PrefUtils.putString("pwd", "950207", LoginActivity.this); + finish(); + } else { + OkGo.post(mUrl + "login") + .tag(this) + .params("account", account) + .params("pwd", MD5Utils.encode(pwd)) + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + String str = account + "登陆成功"; + Log.e("---str---:", str); + Log.e("---s---:", s); + if (s.trim().equals(str)) { + PrefUtils.putString("account", account, LoginActivity.this); + PrefUtils.putString("pwd", pwd, LoginActivity.this); + if(!mRegisterDao.find(account,MD5Utils.encode(pwd))){ + mRegisterDao.add(account,MD5Utils.encode(pwd)); + } + startActivity(new Intent(LoginActivity.this, MainActivity.class)); + finish(); + } + ToastUtils.showToast(LoginActivity.this, s); + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + } + }); + } + } else { + Toast.makeText(LoginActivity.this, "账户或者密码不能为空", Toast.LENGTH_SHORT).show(); + } + break; + case R.id.tv_login_register: + startActivity(new Intent(LoginActivity.this, RegisterActivity.class)); + break; + case R.id.checkBox: + PrefUtils.putBoolean("pwdischeck", checkBox.isChecked(), LoginActivity.this); + break; + case R.id.tv_login_forget: + showDialogForget(); + break; + case R.id.tv_fuwu: + if (cbFw.isChecked()) { + btnLogin.setEnabled(true); + } else { + btnLogin.setEnabled(false); + } + break; + } + } + + + private void showDialogForget() { + ForgetPwdDialog.showDialog(LoginActivity.this, new ForgetPwdDialog.OnForgetPwdListener() { + @Override + public void onFind() { + + } + + @Override + public void onMessage() { + + } + + @Override + public void onCancel() { + + } + }); + } + + +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/MainActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/MainActivity.java new file mode 100644 index 0000000..32476a4 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/MainActivity.java @@ -0,0 +1,230 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.gloabal.SysApplication; +import com.fly.guilingl.ui.dialog.RelaseDialog; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.ui.fragment.main.HomeFragment; +import com.fly.guilingl.ui.fragment.main.MineFragment; +import com.fly.guilingl.ui.fragment.main.GLFragment; +import com.fly.guilingl.ui.fragment.main.ShopFragment; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; + +public class MainActivity extends AppCompatActivity implements + View.OnClickListener { + private LinearLayout mTabHome; + private LinearLayout mTabGL; + private LinearLayout mTabRelase; + private LinearLayout mTabShop; + private LinearLayout mTabMine; + + private ImageButton mImgHome; + private ImageButton mImgGL; + private ImageButton mImgRelase; + private ImageButton mImgShop; + private ImageButton mImgMine; + + private TextView mTvHome; + private TextView mTvGL; + private TextView mTvRelase; + private TextView mTvShop; + private TextView mTvMine; + + private BaseFragment mTab01; + private BaseFragment mTab02; + private BaseFragment mTab03; + private BaseFragment mTab04; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + StatusBarUtils.StatusBarLightMode(MainActivity.this); + SysApplication.getInstance().addActivity(this);//把mainactivity类加入 + initNavigation(); + } + + + private void initNavigation() { + mTabHome = (LinearLayout) findViewById(R.id.tab_home); + mTabGL = (LinearLayout) findViewById(R.id.tab_gl); + mTabRelase = (LinearLayout) findViewById(R.id.tab_relase); + mTabShop = (LinearLayout) findViewById(R.id.tab_shop); + mTabMine = (LinearLayout) findViewById(R.id.tab_mine); + + mImgHome = (ImageButton) findViewById(R.id.tab_home_img); + mImgGL = (ImageButton) findViewById(R.id.tab_gl_img); + mImgRelase = (ImageButton) findViewById(R.id.tab_relase_img); + mImgShop = (ImageButton) findViewById(R.id.tab_shop_img); + mImgMine = (ImageButton) findViewById(R.id.tab_mine_img); + + mTvHome = (TextView) findViewById(R.id.tv_home); + mTvGL = (TextView) findViewById(R.id.tv_gl); + mTvRelase = (TextView) findViewById(R.id.tv_relase); + mTvShop = (TextView) findViewById(R.id.tv_shop); + mTvMine = (TextView) findViewById(R.id.tv_mine); + + mTabHome.setOnClickListener(this); + mTabGL.setOnClickListener(this); + mTabRelase.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String account = PrefUtils.getString("account", "admin", MainActivity.this); + if (!account.equals("游客")) { + showDialog(); + } else { + ToastUtils.showToast(MainActivity.this, "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + mTabShop.setOnClickListener(this); + mTabMine.setOnClickListener(this); + + setSelect(0); + } + + @Override + public void onClick(View view) { + resetImgs(); + switch (view.getId()) { + case R.id.tab_home: + setSelect(0); + break; + case R.id.tab_gl: + setSelect(1); + break; + case R.id.tab_shop: + setSelect(2); + break; + case R.id.tab_mine: + setSelect(3); + break; + } + } + + //弹出发布 + private void showDialog() { + RelaseDialog.showDialog(MainActivity.this, new RelaseDialog.OnRelaseListener() { + @Override + public void onText() { + Intent intent = new Intent(MainActivity.this, YouJiEditorActivity.class); + startActivity(intent); + } + + @Override + public void onPic() { + ToastUtils.showToast(MainActivity.this, "onPic"); + } + + @Override + public void onVideo() { + ToastUtils.showToast(MainActivity.this, "onVideo"); + } + + @Override + public void onTiwen() { + Intent intent = new Intent(MainActivity.this, WenDaEditorActivity.class); + startActivity(intent); + } + + }); + } + + + /** + * 切换图片至暗色 + */ + private void resetImgs() { + mImgHome.setBackgroundResource(R.mipmap.home); + mImgGL.setBackgroundResource(R.mipmap.gl); + mImgShop.setBackgroundResource(R.mipmap.shop); + mImgMine.setBackgroundResource(R.mipmap.mine); + + mTvHome.setTextColor(getResources().getColor(R.color.colorBlack)); + mTvGL.setTextColor(getResources().getColor(R.color.colorBlack)); + mTvShop.setTextColor(getResources().getColor(R.color.colorBlack)); + mTvMine.setTextColor(getResources().getColor(R.color.colorBlack)); + + } + + private void setSelect(int i) { + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction transaction = fm.beginTransaction(); + hideFragment(transaction); + // 把图片设置为亮的 + // 设置内容区域 + switch (i) { + case 0: + if (mTab01 == null) { + mTab01 = new HomeFragment(); + transaction.add(R.id.frame, mTab01); + } else { + transaction.show(mTab01); + } + mImgHome.setBackgroundResource(R.mipmap.home_press); + mTvHome.setTextColor(getResources().getColor(R.color.colorTop)); + break; + case 1: + if (mTab02 == null) { + mTab02 = new GLFragment(); + transaction.add(R.id.frame, mTab02); + } else { + transaction.show(mTab02); + + } + mImgGL.setBackgroundResource(R.mipmap.gl_press); + mTvGL.setTextColor(getResources().getColor(R.color.colorTop)); + break; + case 2: + if (mTab03 == null) { + mTab03 = new ShopFragment(); + transaction.add(R.id.frame, mTab03); + } else { + transaction.show(mTab03); + } + mImgShop.setBackgroundResource(R.mipmap.shop_press); + mTvShop.setTextColor(getResources().getColor(R.color.colorTop)); + break; + case 3: + if (mTab04 == null) { + mTab04 = new MineFragment(); + transaction.add(R.id.frame, mTab04); + } else { + transaction.show(mTab04); + } + mImgMine.setBackgroundResource(R.mipmap.mine_press); + mTvMine.setTextColor(getResources().getColor(R.color.colorTop)); + break; + } + + transaction.commit(); + } + + private void hideFragment(FragmentTransaction transaction) { + if (mTab01 != null) { + transaction.hide(mTab01); + } + if (mTab02 != null) { + transaction.hide(mTab02); + } + if (mTab03 != null) { + transaction.hide(mTab03); + } + if (mTab04 != null) { + transaction.hide(mTab04); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/MyVideoActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/MyVideoActivity.java new file mode 100644 index 0000000..2fd121a --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/MyVideoActivity.java @@ -0,0 +1,61 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.adapter.MyVideoAdapter; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +/** + * Created by Fly on 2019/3/8/008. + */ + +public class MyVideoActivity extends AppCompatActivity { + + private WrapRecyclerView wv; + private ArrayList mList; + private Toolbar toolbar; + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_myvideo); + StatusBarUtils.StatusBarLightMode(this); + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + getFromServer(); + wv = findViewById(R.id.wv_myvideo); + wv.setLayoutManager(new GridLayoutManager(this,1)); + MyVideoAdapter adapter = new MyVideoAdapter(mList,this); + wv.setAdapter(adapter); + } + + private void getFromServer() { + String txt = Data.readFromRaw(this,R.raw.smallvideo); + mList = ParseYouJiDataUtils.getBean(txt); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/RegisterActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/RegisterActivity.java new file mode 100644 index 0000000..4852e71 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/RegisterActivity.java @@ -0,0 +1,125 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.RegisterDao; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.ui.dialog.ConfirmDialog; +import com.fly.guilingl.utils.MD5Utils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.StringCallback; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class RegisterActivity extends AppCompatActivity { + private EditText etAccount; + private EditText etPwd; + private EditText etPwdAgain; + private Button btnRegister; + + private String account; + private String pwd; + private String pwdAgain; + private Toolbar toolbar; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + StatusBarUtils.StatusBarLightMode(this); + initView(); + initData(); + } + + + private void initData() { + btnRegister.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + account = etAccount.getText().toString().trim(); + pwd = etPwd.getText().toString().trim(); + pwdAgain = etPwdAgain.getText().toString().trim(); + if (!TextUtils.isEmpty(pwd) && !TextUtils.isEmpty(pwdAgain) && !TextUtils.isEmpty(account)) { + if (pwd.equals(pwdAgain)) { + OkGo.post(Url.getInstance().getUrl() + "register") + .params("account", account) + .params("pwd", MD5Utils.encode(pwd))//MD5加密 + .tag(this) + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + String str = account + "注册成功"; + if (s.trim().equals(str)) { + Log.e("账户:",account); + Log.e("密码MD5加密:",MD5Utils.encode(pwd)); + RegisterDao.getInstance(RegisterActivity.this). + add(account, MD5Utils.encode(pwd));//MD5加密 + showAlertMessage(s); + } else { + showAlertMessage("用户名已经被注册"); + } + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + ToastUtils.showToast(RegisterActivity.this,"网络异常!"); + } + }); + } else { + showAlertMessage("两次密码不一样,请重新输入!!!"); + } + } else { + showAlertMessage("输入框不能为空!!!"); + } + } + }); + + } + + private void showAlertMessage(String body) { + ConfirmDialog.showDialog(RegisterActivity.this, "注册", body, new ConfirmDialog.OnConfirmListener() { + @Override + public void confirm() { + finish(); + } + + @Override + public void cancel() { + etAccount.setText(""); + etPwd.setText(""); + etPwdAgain.setText(""); + } + }); + } + + private void initView() { + etAccount = (EditText) findViewById(R.id.et_register_account); + etPwd = (EditText) findViewById(R.id.et_register_pwd); + etPwdAgain = (EditText) findViewById(R.id.et_register_pwd_again); + btnRegister = (Button) findViewById(R.id.bt_register); + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SearchGLActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SearchGLActivity.java new file mode 100644 index 0000000..6c14d4b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SearchGLActivity.java @@ -0,0 +1,38 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * Created by Fly on 2019/1/6/006. + */ + +public class SearchGLActivity extends AppCompatActivity { + private TextView tvCancle; + private EditText etSearchGL; + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_search_gl); + StatusBarUtils.StatusBarLightMode(SearchGLActivity.this); + initView(); + } + + private void initView() { + tvCancle = findViewById(R.id.tv_cancle); + etSearchGL = findViewById(R.id.et_search_gl); + tvCancle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SetAccountPdActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SetAccountPdActivity.java new file mode 100644 index 0000000..fe0c3b9 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SetAccountPdActivity.java @@ -0,0 +1,141 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.RegisterDao; +import com.fly.guilingl.gloabal.SysApplication; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.utils.MD5Utils; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.StringUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.StringCallback; + +import org.w3c.dom.Text; + +import java.util.Timer; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Fly on 2019/5/11/011. + */ + +public class SetAccountPdActivity extends AppCompatActivity { + private Button btnConfirm; + private TextView tvAccount; + private EditText etYuanPwd; + private EditText etNewPwd; + private EditText etNewAgainPwd; + private Toolbar toolbar; + private String mStrAccount; + private String mStrYuanPwd; + private String mStrNewPwd; + private String mStrNewAgainPwd; + private RegisterDao mRegisterDao; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_set_accountpwd); + StatusBarUtils.StatusBarLightMode(this); + SysApplication.getInstance().addActivity(this);//把mainactivity类加入 + + mRegisterDao = RegisterDao.getInstance(this); + mStrAccount = PrefUtils.getString("account", "xxxx", this); + initViews(); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + tvAccount.setText("当前账号是:" + mStrAccount); + + btnConfirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + if (mStrAccount.equals("admin")) { + ToastUtils.showToast(SetAccountPdActivity.this, "超级用户,无法进行修改密码!"); + return; + } + mStrYuanPwd = etYuanPwd.getText().toString().trim(); + mStrNewPwd = etNewPwd.getText().toString().trim(); + mStrNewAgainPwd = etNewAgainPwd.getText().toString().trim(); + if (StringUtils.isEmpty(mStrYuanPwd) || StringUtils.isEmpty(mStrNewPwd) || StringUtils.isEmpty(mStrNewAgainPwd)) { + ToastUtils.showToast(SetAccountPdActivity.this, "输入框不能为空"); + } else { + if (MD5Utils.encode(mStrYuanPwd).equals(mRegisterDao.queryPwdByAccount(mStrAccount))) { + if (mStrNewPwd.equals(mStrNewAgainPwd)) { + + OkGo.post(Url.getInstance().getUrl() + "updatePwd") + .params("account", mStrAccount) + .params("pwd", MD5Utils.encode(mStrNewAgainPwd)).execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + String update = mRegisterDao.updatePwdByAccount(mStrAccount, MD5Utils.encode(mStrNewAgainPwd)); + if (s.trim().equals(update)) { + ToastUtils.showToast(SetAccountPdActivity.this, "密码修改成功!"); + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(2000); + Intent intent = new Intent(SetAccountPdActivity.this,LoginActivity.class); + startActivity(intent); + SysApplication.getInstance().exit(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + } else { + ToastUtils.showToast(SetAccountPdActivity.this, "密码修改失败!"); + mRegisterDao.updatePwdByAccount(mStrAccount, MD5Utils.encode(mStrYuanPwd)); + } + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + ToastUtils.showToast(SetAccountPdActivity.this, "密码更新失败!"); + } + }); + + } else { + ToastUtils.showToast(SetAccountPdActivity.this, "两次密码输入不正确"); + } + } else { + ToastUtils.showToast(SetAccountPdActivity.this, "原密码输入不正确"); + etYuanPwd.setText(""); + etNewPwd.setText(""); + etNewAgainPwd.setText(""); + } + } + } + }); + } + + private void initViews() { + btnConfirm = findViewById(R.id.btn_confirm); + tvAccount = findViewById(R.id.tv_account); + etYuanPwd = findViewById(R.id.et_pwd); + etNewPwd = findViewById(R.id.et_new_pwd); + etNewAgainPwd = findViewById(R.id.et_new_againpwd); + toolbar = findViewById(R.id.toolbar); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SettingActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SettingActivity.java new file mode 100644 index 0000000..db69267 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SettingActivity.java @@ -0,0 +1,109 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.view.SettingItemClickView; + +/** + * Created by Fly on 2019/1/26/026. + */ + +public class SettingActivity extends AppCompatActivity { + + private Toolbar toolbar; + private SettingItemClickView sivAccount; + private SettingItemClickView sivAddress; + private SettingItemClickView sivTuisong; + private SettingItemClickView sivClearcashe; + private SettingItemClickView sivScroll; + + private SettingItemClickView sivJiance; + private SettingItemClickView sivFankui; + private SettingItemClickView sivPingjia; + private SettingItemClickView sivShare; + private SettingItemClickView sivAbout; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_setting); + StatusBarUtils.StatusBarLightMode(this); + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + initSiv(); + } + + private void initSiv() { + sivAccount = findViewById(R.id.siv_account); + sivAddress = findViewById(R.id.siv_address); + sivTuisong = findViewById(R.id.siv_tuisong); + sivClearcashe = findViewById(R.id.siv_clearcashe); + sivScroll = findViewById(R.id.siv_scroll); + + sivAddress.setTitle("密码修改"); + sivAddress.setIvTitle(R.mipmap.ic_account); + sivAddress.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(SettingActivity.this,SetAccountPdActivity.class); + startActivity(intent); + } + }); + + sivAccount.setTitle("常用地址"); + sivAccount.setIvTitle(R.mipmap.ic_address); + + sivTuisong.setTitle("推送设置"); + sivTuisong.setIvTitle(R.mipmap.ic_tuisong); + + sivClearcashe.setTitle("清除缓存"); + sivClearcashe.setIvTitle(R.mipmap.ic_clear); + + sivScroll.setTitle("自动播放"); + sivScroll.setIvTitle(R.mipmap.ic_scroll); + + + sivJiance = findViewById(R.id.siv_jiance); + sivFankui = findViewById(R.id.siv_fankui); + sivPingjia = findViewById(R.id.siv_pingjia); + sivShare = findViewById(R.id.siv_share); + sivAbout = findViewById(R.id.siv_about); + + sivJiance.setTitle("检测最新版本"); + sivJiance.setIvTitle(R.mipmap.ic_jiance); + + sivFankui.setTitle("常见问题及意见反馈"); + sivFankui.setIvTitle(R.mipmap.ic_fankui); + + sivPingjia.setTitle("评价张家界攻略"); + sivPingjia.setIvTitle(R.mipmap.ic_pingjia); + + sivShare.setTitle("分享张家界攻略"); + sivShare.setIvTitle(R.mipmap.ic_share); + + sivAbout.setTitle("关于张家界攻略"); + sivAbout.setIvTitle(R.mipmap.ic_about); + sivAbout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(SettingActivity.this,GuideActivity.class); + intent.putExtra("type",1); + startActivity(intent); + } + }); + + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ShopDetailActivity3.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ShopDetailActivity3.java new file mode 100644 index 0000000..ee7cec3 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/ShopDetailActivity3.java @@ -0,0 +1,399 @@ +package com.fly.guilingl.ui.activity; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.webkit.WebResourceRequest; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.CollectionDao; +import com.fly.guilingl.db.dao.HistoryDao; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.manager.ThreadManager; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.StringUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.utils.UIUtils; +import com.fly.guilingl.view.AmountView; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.cache.CacheMode; +import com.lzy.okgo.callback.StringCallback; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Fly on 2019/1/13/013. + */ + +public class ShopDetailActivity3 extends AppCompatActivity { + + private LinearLayout first; + private LinearLayout second; + private TextView btGou; + private ImageView ivClose; + private ImageView ivFavorites; + private TextView tvFavorites; + private WebView wb; + private String mTitle; + private String mUrl; + private String mUniquekey; + private String mLeiBie; + + private String mPrice; + private String mImageurl; + private String mName; + private int mAmount; + + private TextView tvPrice; + private AmountView avAmount; + private ImageView ivTouXiang; + private Button btnConfirm; + + private CollectionDao mCollectionDao; + private HistoryDao mHistoryDao; + + private String mAccount; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_detail_shop3); + StatusBarUtils.StatusBarLightMode(this); + + mAccount = PrefUtils.getString("account", "admin", this); + mCollectionDao = mCollectionDao.getInstance(this); + mHistoryDao = mHistoryDao.getInstance(this); + getIntentData(); + initView(); + initWebView(); + + if (!mAccount.equals("游客")) { + initFavorites(); + initHistory(); + } else { + ivFavorites.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ToastUtils.showToast(ShopDetailActivity3.this, "游客模式下不能进行收藏,请先登陆!"); + } + }); + btGou.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ToastUtils.showToast(ShopDetailActivity3.this, "游客模式下不能进行购买,请先登陆!"); + } + }); + } + + + } + + private boolean isCollection; + + private void initFavorites() { + + //开启一个线程池,查询数据库中所有收藏的新闻 + ThreadManager.getThreadPool().execute(new Runnable() { + @Override + public void run() { + isCollection = mCollectionDao.find(mUniquekey, mAccount); + UIUtils.runOnUIThread(new Runnable() { + @Override + public void run() { + if (isCollection) { + ivFavorites.setImageResource(R.mipmap.favorites_press); + tvFavorites.setTextColor(getResources().getColor(R.color.colorTop)); + } else { + ivFavorites.setImageResource(R.mipmap.favorites); + tvFavorites.setTextColor(getResources().getColor(R.color.colorBlack)); + } + } + }); + } + }); + + ivFavorites.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (isCollection) { + ivFavorites.setImageResource(R.mipmap.favorites); + tvFavorites.setTextColor(getResources().getColor(R.color.colorBlack)); + mCollectionDao.deleteByUniquekey(mUniquekey, mAccount); + isCollection = false; + } else { + ivFavorites.setImageResource(R.mipmap.favorites_press); + tvFavorites.setTextColor(getResources().getColor(R.color.colorTop)); + mCollectionDao.add(mAccount, mUniquekey, mUrl, mTitle, mLeiBie, mImageurl, getNowTime()); + isCollection = true; + } + } + }); + + } + + /** + * 阅读历史 + */ + private void initHistory() { + ThreadManager.getThreadPool().execute(new Runnable() { + @Override + public void run() { + if (!mHistoryDao.find(mUniquekey, mAccount)) { + mHistoryDao.add(mAccount, mUniquekey, mUrl, mTitle, mLeiBie, mImageurl, getNowTime()); + postByOkGo(Url.getInstance().getUrl() + "history", "history"); + } + } + }); + } + + private void postByOkGo(String url, String cacheKey) { + OkGo.post(url) + .tag(this) + .cacheKey(cacheKey) + .cacheMode(CacheMode.DEFAULT) + .params("account", mAccount) + .params("uniquekey", mUniquekey) + .params("url", mUrl) + .params("title", mTitle) + .params("leibie", mLeiBie) + .params("imageurl", mImageurl) + .params("time", getNowTime()) + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + ToastUtils.showToast(ShopDetailActivity3.this, s); + } + + @Override + public void onError(Call call, Response response, Exception e) { + super.onError(call, response, e); + } + }); + } + + private void initView() { + tvFavorites = findViewById(R.id.tv_shop_favorites); + ivFavorites = findViewById(R.id.iv_shop_favorites); + first = findViewById(R.id.first); + second = findViewById(R.id.second); + btGou = findViewById(R.id.tv_gou); + btGou.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startFirstAnimation(); + } + }); + ivClose = findViewById(R.id.iv_close); + ivClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startSecondAnimation(); + } + }); + + tvPrice = findViewById(R.id.tv_shop_price); + avAmount = findViewById(R.id.av_shop_amount); + ivTouXiang = findViewById(R.id.iv_shop_touxiang); + + tvPrice.setText(mPrice + "元"); + Glide.with(this).load(mImageurl).into(ivTouXiang); + avAmount.setOnAmountChangeListener(new AmountView.OnAmountChangeListener() { + @Override + public void onAmountChange(View view, int amount) { + mAmount = amount; + //ToastUtils.showToast(ShopDetailActivity3.this,amount+""); + } + }); + avAmount.setGoods_storage(99); + + btnConfirm = findViewById(R.id.btn_shop_confirm); + + btnConfirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(ShopDetailActivity3.this, ConfirmActivity.class); + Bundle bundle = new Bundle(); + + bundle.putString("title", mTitle); + bundle.putString("leibie", mLeiBie); + bundle.putString("url", mUrl); + bundle.putString("uniquekey", mUniquekey); + bundle.putString("price", mPrice); + bundle.putString("imageurl", mImageurl); + bundle.putInt("amount", mAmount); + bundle.putString("name", mName); + intent.putExtra("bundle", bundle); + + startActivity(intent); + } + }); + } + + private void initWebView() { + wb = findViewById(R.id.wb); + wb.loadUrl(mUrl); + //声明WebSettings子类 + WebSettings webSettings = wb.getSettings(); + + //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript + webSettings.setJavaScriptEnabled(true); + + //设置自适应屏幕,两者合用 + webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小 + webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小 + + //缩放操作 + webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。 + webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放 + webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件 + + //其他细节操作 + webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存 + webSettings.setAllowFileAccess(true); //设置可以访问文件 + webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 + webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片 + webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式 + wb.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + return super.shouldOverrideUrlLoading(view, request); + } + }); + + } + + private void getIntentData() { + Intent intent = getIntent(); + Bundle bundle = intent.getBundleExtra("bundle"); + mTitle = bundle.getString("title"); + mUrl = bundle.getString("url"); + mUniquekey = bundle.getString("uniquekey"); + mLeiBie = bundle.getString("leibie"); + + + if (StringUtils.isEmpty(bundle.getString("price"))) { + mPrice = "1999"; + } else { + mPrice = bundle.getString("price"); + } + + if (StringUtils.isEmpty(bundle.getString("imageurl"))) { + mImageurl = "http://n1-q.mafengwo.net/s12/M00/AF/3D/wKgED1wSDiaAKuIhAARrCfUTIkE23.jpeg"; + } else { + mImageurl = bundle.getString("imageurl"); + } + + if (StringUtils.isEmpty(bundle.getString("name"))) { + mName = "fly旅游,天下我有"; + } else { + mName = bundle.getString("name"); + } + + } + + private void startFirstAnimation() { + /** + * 1)first_View动画:1.翻转动画;2.透明度动画;3.缩放动画 + */ + //翻转 + ObjectAnimator firstRotationAnim = ObjectAnimator.ofFloat(first, "rotationX", 0f, 25f, 0f); + firstRotationAnim.setDuration(400); + //透明度 + ObjectAnimator firstAlphaAnim = ObjectAnimator.ofFloat(first, "alpha", 1f, 0.5f); + firstAlphaAnim.setDuration(300); + //缩放 + ObjectAnimator firstScaleXAnim = ObjectAnimator.ofFloat(first, "scaleX", 1f, 0.8f); + firstScaleXAnim.setDuration(300); + ObjectAnimator firstScaleYAnim = ObjectAnimator.ofFloat(first, "scaleY", 1f, 0.8f); + firstScaleYAnim.setDuration(300); + //平移上去 + ObjectAnimator firstTranslationYAnim = ObjectAnimator.ofFloat(first, "translationY", 0f, -0.1f * first.getHeight()); + firstTranslationYAnim.setDuration(300); + //把隐藏的给显示出来 + ObjectAnimator sencondTranslationYAnim = ObjectAnimator.ofFloat(second, "translationY", second.getHeight(), 0); + sencondTranslationYAnim.setDuration(300); + sencondTranslationYAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + second.setVisibility(View.VISIBLE); + first.setEnabled(false); + first.setClickable(false); + second.setEnabled(true); + second.setClickable(true); + } + }); + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether(firstRotationAnim, firstAlphaAnim, firstScaleXAnim, firstScaleYAnim, firstTranslationYAnim, sencondTranslationYAnim); + animatorSet.start(); + } + + private void startSecondAnimation() { + //翻转 + ObjectAnimator firstRotationAnim = ObjectAnimator.ofFloat(first, "rotationX", 0f, 25f, 0f); + firstRotationAnim.setDuration(400); + //透明度 + ObjectAnimator firstAlphaAnim = ObjectAnimator.ofFloat(first, "alpha", 0f, 1f); + firstAlphaAnim.setDuration(300); + //缩放 + ObjectAnimator firstScaleXAnim = ObjectAnimator.ofFloat(first, "scaleX", 0.8f, 1f); + firstScaleXAnim.setDuration(300); + ObjectAnimator firstScaleYAnim = ObjectAnimator.ofFloat(first, "scaleY", 0.8f, 1); + firstScaleYAnim.setDuration(300); + //把first平移下去 + ObjectAnimator firstTranslationYAnim = ObjectAnimator.ofFloat(first, "translationY", -0.1f * first.getHeight(), 0f); + firstTranslationYAnim.setDuration(300); + //把第二个view下移 + ObjectAnimator sencondTranslationYAnim = ObjectAnimator.ofFloat(second, "translationY", 0f, second.getHeight()); + sencondTranslationYAnim.setDuration(300); + sencondTranslationYAnim.start(); + sencondTranslationYAnim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + super.onAnimationStart(animation); + second.setVisibility(View.INVISIBLE); + first.setEnabled(true); + first.setClickable(true); + second.setEnabled(false); + second.setClickable(false); + } + + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + } + }); + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether(firstRotationAnim, firstAlphaAnim, firstScaleXAnim, firstScaleYAnim, sencondTranslationYAnim, firstTranslationYAnim); + animatorSet.start(); + } + + + /** + * 获取时间 + */ + private String getNowTime() { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + System.out.println(df.format(new Date()));// new Date()为获取当前系统时间 + return df.format(new Date()) + ""; + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SplashActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SplashActivity.java new file mode 100644 index 0000000..7f45ee7 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/SplashActivity.java @@ -0,0 +1,88 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/** + * 闪屏页面 + */ + +public class SplashActivity extends AppCompatActivity { + private TextView textView; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + closeAndroidPDialog(); + StatusBarUtils.StatusBarLightMode(this); + setContentView(R.layout.activity_splash); + textView = findViewById(R.id.tv_tiao); + textView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + enterLogin(); + timer.cancel();//取消 + } + }); + timer.start();//开启计时 + } + + /** + * 时间倒计时 + */ + private CountDownTimer timer = new CountDownTimer(6000, 1000) { + + @Override + public void onTick(long millisUntilFinished) { + textView.setText(("跳转 " + millisUntilFinished / 1000) + "秒"); + } + + @Override + public void onFinish() { + enterLogin(); + } + }; + + private void enterLogin() { + Intent intent = new Intent(SplashActivity.this, GuideActivity.class); + startActivity(intent); + finish(); + } + + /** + * 调研了一下,是 Android P 后谷歌限制了开发者调用非官方公开API 方法或接口,也就是说,你用反射直接调用源码就会有这样的提示弹窗出现,非 SDK 接口指的是 Android 系统内部使用、并未提供在 SDK 中的接口,开发者可能通过 Java 反射、JNI 等技术来调用这些接口。但是,这么做是很危险的:非 SDK 接口没有任何公开文档,必须查看源代码才能理解其行为逻辑。 + * 但是源码是JAVA写的,万物皆可反射,所以还是可以用反射干掉这个 每次启动都会弹出的提醒窗口 + */ + private void closeAndroidPDialog() { + try { + Class aClass = Class.forName("android.content.pm.PackageParser$Package"); + Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); + declaredConstructor.setAccessible(true); + } catch (Exception e) { + e.printStackTrace(); + } + try { + Class cls = Class.forName("android.app.ActivityThread"); + Method declaredMethod = cls.getDeclaredMethod("currentActivityThread"); + declaredMethod.setAccessible(true); + Object activityThread = declaredMethod.invoke(null); + Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown"); + mHiddenApiWarningShown.setAccessible(true); + mHiddenApiWarningShown.setBoolean(activityThread, true); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/TiWenActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/TiWenActivity.java new file mode 100644 index 0000000..6557dbb --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/TiWenActivity.java @@ -0,0 +1,19 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; + +import com.fly.guilingl.R; + +/** + * Created by Fly on 2019/3/30/030. + */ + +public class TiWenActivity extends AppCompatActivity { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_youji); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/TongZhiActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/TongZhiActivity.java new file mode 100644 index 0000000..1272e16 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/TongZhiActivity.java @@ -0,0 +1,32 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * Created by Fly on 2019/1/26/026. + */ + +public class TongZhiActivity extends AppCompatActivity { + private Toolbar toolbar; + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tongzhi); + StatusBarUtils.StatusBarLightMode(this); + + toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WeatherDetailActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WeatherDetailActivity.java new file mode 100644 index 0000000..df2b264 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WeatherDetailActivity.java @@ -0,0 +1,107 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.WeatherBean; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.ui.adapter.WeatherDetailAdapter; +import com.fly.guilingl.utils.ParseWeatherDataUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.UIUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.cache.CacheMode; +import com.lzy.okgo.callback.StringCallback; + +import java.util.ArrayList; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Fly on 2019/3/28/028. + */ + +public class WeatherDetailActivity extends AppCompatActivity { + + private TextView tvValue; + private TextView tvPubTime; + private TextView tvWeather; + private TextView tvFeelsLike; + private TextView tvHumidity; + private TextView tvPressure; + + private RecyclerView mRv; + private WeatherDetailAdapter mAdapter; + private WeatherBean mBean; + private ArrayList mList; + private LinearLayout llWeather; + + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_weather_detail); + StatusBarUtils.StatusBarLightMode(this); + Toolbar toolbar = findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + mRv = findViewById(R.id.rv); + mRv.setLayoutManager(new LinearLayoutManager(this));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + tvValue = findViewById(R.id.tv_value); + tvPubTime = findViewById(R.id.tv_pubTime); + tvWeather = findViewById(R.id.tv_weather); + tvFeelsLike = findViewById(R.id.feelsLike); + tvHumidity = findViewById(R.id.humidity); + tvPressure = findViewById(R.id.pressure); + llWeather = findViewById(R.id.ll_weather); + getFromServer(); + } + + private void getFromServer() { + OkGo.get(Url.weatherUrl) + .tag(this) + .cacheKey("weather") + .cacheMode(CacheMode.FIRST_CACHE_THEN_REQUEST) // 缓存模式,详细请看缓存介绍 + .execute(new StringCallback() { + @Override + public void onSuccess(final String s, Call call, Response response) { + mBean = ParseWeatherDataUtils.getBean(s); + UIUtils.runOnUIThread(new Runnable() { + @Override + public void run() { + tvPubTime.setText("更新时间:" + mBean.current_pubTime); + tvValue.setText(mBean.current_temperature); + tvWeather.setText(mBean.current_weather); + tvPressure.setText("气压:" + mBean.current_pressure); + tvFeelsLike.setText("体感温度:" + mBean.current_feelsLike); + tvHumidity.setText("相对空气湿度:" + mBean.current_humidity); + ParseWeatherDataUtils.setWeatherBackGround(llWeather, mBean.current_weather); + } + }); + mList = ParseWeatherDataUtils.getListBean(s); + Log.e("--mList---", mList.size() + ""); + + mAdapter = new WeatherDetailAdapter(mList); + mRv.setAdapter(mAdapter); + + } + }); + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaActivity.java new file mode 100644 index 0000000..67b09b5 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaActivity.java @@ -0,0 +1,93 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.WenDaBean; +import com.fly.guilingl.db.dao.WenDaDao; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.view.WrapRecyclerView; +import com.fly.guilingl.ui.fragment.adapter.WenDaAdapter; + + +import java.util.ArrayList; + +public class WenDaActivity extends AppCompatActivity { + private ArrayList mList; + private WrapRecyclerView rvYouJi; + private WenDaAdapter mAdapter; + private WenDaDao mWenDaDao; + private Toolbar toolbar; + private TextView tvDelete; + private TextView tvAdd; + private String mAccount; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_wenda); + StatusBarUtils.StatusBarLightMode(this); + mAccount = PrefUtils.getString("account", "admin", this); + getDataFromSQl(); + initToolbar(); + rvYouJi = findViewById(R.id.rv_youji); + mAdapter = new WenDaAdapter(mList); + rvYouJi.setLayoutManager(new LinearLayoutManager(this)); + rvYouJi.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + rvYouJi.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new WenDaAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + Intent intent = new Intent(WenDaActivity.this, WenDaDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title", mList.get(position).title); + bundle.putString("url", mList.get(position).url); + bundle.putString("author", mList.get(position).author); + bundle.putString("time", mList.get(position).time); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void initToolbar() { + toolbar = findViewById(R.id.toolbar); + tvDelete = findViewById(R.id.tv_delete); + tvAdd = findViewById(R.id.tv_add); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mWenDaDao.deleteAll(mAccount); + mAdapter.clearAll(); + } + }); + tvAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(WenDaActivity.this, WenDaEditorActivity.class); + startActivity(intent); + } + }); + } + + private void getDataFromSQl() { + mWenDaDao = WenDaDao.getInstance(this); + mList = mWenDaDao.findAll(mAccount); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaDetailActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaDetailActivity.java new file mode 100644 index 0000000..b111984 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaDetailActivity.java @@ -0,0 +1,59 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * Created by Fly on 2019/3/30/030. + */ + +public class WenDaDetailActivity extends AppCompatActivity { + private String mTitle; + private String mContent; + private String mTime; + private String mAuthor; + private Toolbar toolbar; + private TextView tvTitle; + private TextView tvAuthor; + private TextView tvContent; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_wenda_detail); + StatusBarUtils.StatusBarLightMode(this); + getIntentData(); + toolbar = findViewById(R.id.toolbar); + tvTitle = findViewById(R.id.tv_title); + tvAuthor = findViewById(R.id.tv_author); + tvContent = findViewById(R.id.tv_content); + + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + tvTitle.setText(mTitle); + tvAuthor.setText(mAuthor + " " + mTime); + tvContent.setText(mContent); + } + + private void getIntentData() { + Intent intent = getIntent(); + Bundle bundle = intent.getBundleExtra("bundle"); + mTitle = bundle.getString("title"); + mContent = bundle.getString("url"); + mAuthor = bundle.getString("author"); + mTime = bundle.getString("time"); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaEditorActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaEditorActivity.java new file mode 100644 index 0000000..c4bc226 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/WenDaEditorActivity.java @@ -0,0 +1,78 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.WenDaDao; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.StringUtils; +import com.fly.guilingl.utils.ToastUtils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by Fly on 2019/3/30/030. + */ + +public class WenDaEditorActivity extends AppCompatActivity { + private Toolbar toolbar; + private TextView tvFaBu; + private EditText etTitle; + private EditText etContent; + private String mAccount; + + private WenDaDao mWenDaDao; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_wenda_editor); + StatusBarUtils.StatusBarLightMode(this); + mWenDaDao = WenDaDao.getInstance(this); + mAccount = PrefUtils.getString("account", "admin", this); + initToolBar(); + etTitle = findViewById(R.id.et_title); + etContent = findViewById(R.id.et_content); + } + + private String getNowTime() { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + System.out.println(df.format(new Date()));// new Date()为获取当前系统时间 + return df.format(new Date()) + ""; + } + + private void initToolBar() { + toolbar = findViewById(R.id.toolbar); + tvFaBu = findViewById(R.id.tv_fabu); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + tvFaBu.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int key = 0; + key = key + 1; + String url = etContent.getText().toString().trim(); + String title = etTitle.getText().toString().trim(); + if (!StringUtils.isEmpty(url) && !StringUtils.isEmpty(title)) { + mWenDaDao.add("wenda" + key, url, title, "问答", "https://tr-osdcp.qunarzz.com/tr-osd-tr-space/img/cad1ff0bff1d9c4df09bbbda1e94560a.jpg", getNowTime(), mAccount); + etContent.setText(""); + etTitle.setText(""); + } + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiActivity.java new file mode 100644 index 0000000..a9084eb --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiActivity.java @@ -0,0 +1,97 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.db.dao.YouJiDao; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.view.WrapRecyclerView; +import com.fly.guilingl.ui.fragment.adapter.YouJiAdapter; + + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/3/30/030. + */ + +public class YouJiActivity extends AppCompatActivity { + private ArrayList mList; + private WrapRecyclerView rvYouJi; + private YouJiAdapter mAdapter; + private YouJiDao mYouJiDao; + private Toolbar toolbar; + private TextView tvDelete; + private TextView tvAdd; + private String mAccount; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_youji); + StatusBarUtils.StatusBarLightMode(this); + mAccount = PrefUtils.getString("account", "admin", this); + getDataFromSQl(); + initToolbar(); + rvYouJi = findViewById(R.id.rv_youji); + mAdapter = new YouJiAdapter(mList); + rvYouJi.setLayoutManager(new LinearLayoutManager(this)); + rvYouJi.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + rvYouJi.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new YouJiAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + Intent intent = new Intent(YouJiActivity.this, YouJiDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title", mList.get(position).title); + bundle.putString("url", mList.get(position).url); + bundle.putString("author", mList.get(position).author); + bundle.putString("time", mList.get(position).time); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void initToolbar() { + toolbar = findViewById(R.id.toolbar); + tvDelete = findViewById(R.id.tv_delete); + tvAdd = findViewById(R.id.tv_add); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mYouJiDao.deleteAll(mAccount); + mAdapter.clearAll(); + } + }); + tvAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(YouJiActivity.this, YouJiEditorActivity.class); + startActivity(intent); + } + }); + } + + private void getDataFromSQl() { + mYouJiDao = YouJiDao.getInstance(this); + mList = mYouJiDao.findAll(mAccount); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiDetailActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiDetailActivity.java new file mode 100644 index 0000000..f44686f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiDetailActivity.java @@ -0,0 +1,59 @@ +package com.fly.guilingl.ui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.utils.StatusBarUtils; + +/** + * Created by Fly on 2019/3/30/030. + */ + +public class YouJiDetailActivity extends AppCompatActivity { + private String mTitle; + private String mContent; + private String mTime; + private String mAuthor; + private Toolbar toolbar; + private TextView tvTitle; + private TextView tvAuthor; + private TextView tvContent; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_youji_detail); + StatusBarUtils.StatusBarLightMode(this); + getIntentData(); + toolbar = findViewById(R.id.toolbar); + tvTitle = findViewById(R.id.tv_title); + tvAuthor = findViewById(R.id.tv_author); + tvContent = findViewById(R.id.tv_content); + + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + tvTitle.setText(mTitle); + tvAuthor.setText(mAuthor + " " + mTime); + tvContent.setText(mContent); + } + + private void getIntentData() { + Intent intent = getIntent(); + Bundle bundle = intent.getBundleExtra("bundle"); + mTitle = bundle.getString("title"); + mContent = bundle.getString("url"); + mAuthor = bundle.getString("author"); + mTime = bundle.getString("time"); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiEditorActivity.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiEditorActivity.java new file mode 100644 index 0000000..bb8dde0 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/activity/YouJiEditorActivity.java @@ -0,0 +1,80 @@ +package com.fly.guilingl.ui.activity; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.db.dao.YouJiDao; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.StringUtils; +import com.fly.guilingl.utils.ToastUtils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by Fly on 2019/3/30/030. + */ + +public class YouJiEditorActivity extends AppCompatActivity { + private Toolbar toolbar; + private TextView tvFaBu; + private EditText etTitle; + private EditText etContent; + private String mAccount; + + private YouJiDao mYouJiDao; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_youji_editor); + StatusBarUtils.StatusBarLightMode(this); + mYouJiDao = YouJiDao.getInstance(this); + mAccount = PrefUtils.getString("account", "admin", this); + initToolBar(); + etTitle = findViewById(R.id.et_title); + etContent = findViewById(R.id.et_content); + } + + private String getNowTime() { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + System.out.println(df.format(new Date()));// new Date()为获取当前系统时间 + return df.format(new Date()) + ""; + } + + private void initToolBar() { + toolbar = findViewById(R.id.toolbar); + tvFaBu = findViewById(R.id.tv_fabu); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + tvFaBu.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int key = 0; + key = key + 1; + String url = etContent.getText().toString().trim(); + String title = etTitle.getText().toString().trim(); + if (!StringUtils.isEmpty(url) && !StringUtils.isEmpty(title)) { + mYouJiDao.add("youji" + key, url, title, "游记", "https://tr-osdcp.qunarzz.com/tr-osd-tr-space/img/6eb27a1b9fd72d160fd6a4d511904e09.jpg", getNowTime(), mAccount); + etContent.setText(""); + etTitle.setText(""); + } else { + ToastUtils.showToast(YouJiEditorActivity.this, "输入框不能为空"); + } + } + }); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/CAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/CAdapter.java new file mode 100644 index 0000000..d9821a7 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/CAdapter.java @@ -0,0 +1,60 @@ +package com.fly.guilingl.ui.adapter; + +import android.content.Context; +import android.database.Cursor; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.Collection; + + +/** + * Created by Fly on 2017/3/4. + */ + +public class CAdapter extends CursorAdapter { + + public CAdapter(Context context, Cursor c) { + super(context, c); + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return View.inflate(context, R.layout.list_item_collection, null); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + ViewHolder holder = getHolder(view); + Collection news = Collection.createFromCursor(cursor); + holder.tvTitle.setText("【" + news.leibie + "】 " + news.account + ":" + news.title); + //System.out.println("XXX--->" + news.title); + //holder.tvTitle.setText(news.title); + } + + private ViewHolder getHolder(View view) { + ViewHolder holder = (ViewHolder) view.getTag(); + if (holder == null) { + holder = new ViewHolder(view); + view.setTag(holder); + } + return holder; + } + + class ViewHolder { + private TextView tvTitle; + private ImageView ivDelete; + + public ViewHolder(View view) { + tvTitle = (TextView) view.findViewById(R.id.tv_collection_title); + } + } +// static class ViewHolder { +// public TextView tvTitle; +// public ImageView ivDelete; +// } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/CollectionAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/CollectionAdapter.java new file mode 100644 index 0000000..6cd3722 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/CollectionAdapter.java @@ -0,0 +1,68 @@ +package com.fly.guilingl.ui.adapter; + +import android.content.Context; +import android.database.Cursor; +import android.graphics.Color; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.Collection; + + +/** + * Created by Fly on 2017/3/4. + */ + +public class CollectionAdapter extends CursorAdapter { + private Context mCtx; + + public CollectionAdapter(Context context, Cursor c) { + super(context, c); + mCtx = context; + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return View.inflate(context, R.layout.item_1pic, null); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + ViewHolder holder = getHolder(view); + Collection news = Collection.createFromCursor(cursor); + holder.tvTitle.setText("【" + news.leibie + "】" + news.title); + holder.tvAuthor.setText(news.account); + holder.tvTime.setTextColor(Color.RED); + holder.tvTime.setText(news.time); + Glide.with(mCtx).load(news.imageUrl).into(holder.ivImage); + } + + private ViewHolder getHolder(View view) { + ViewHolder holder = (ViewHolder) view.getTag(); + if (holder == null) { + holder = new ViewHolder(view); + view.setTag(holder); + } + return holder; + } + + class ViewHolder { + private TextView tvTitle; + private ImageView ivImage; + private TextView tvTime; + private TextView tvAuthor; + + + public ViewHolder(View view) { + tvTitle = view.findViewById(R.id.tv_title); + ivImage = view.findViewById(R.id.iv_image); + tvTime = view.findViewById(R.id.tv_date); + tvAuthor = view.findViewById(R.id.tv_author); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/DingDanAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/DingDanAdapter.java new file mode 100644 index 0000000..4cdaf2f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/DingDanAdapter.java @@ -0,0 +1,120 @@ +package com.fly.guilingl.ui.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.DingDanBean; +import com.fly.guilingl.db.dao.DingdanDao; +import com.fly.guilingl.ui.fragment.adapter.DiscoveryAdapter; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/14/014. + */ + +public class DingDanAdapter extends RecyclerView.Adapter { + + + private OnItemClickListener mOnItemClickListener; + private Context mCtx; + private ArrayList mList; + + public DingDanAdapter(ArrayList list, Context ctx) { + mCtx = ctx; + mList = list; + } + + @Override + public DingDanAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dingdan, parent, false); + return new DingDanAdapter.MyViewHolder(view); + } + + @Override + public void onBindViewHolder(DingDanAdapter.MyViewHolder holder, final int position) { + DingDanBean danBean = mList.get(position); + String name = danBean.name; + String time = danBean.time; + String imageurl = danBean.imageUrl; + String title = danBean.title; + int price = Integer.parseInt(danBean.price); + //int price = 99; + int amount = danBean.amount; + holder.tvName.setText(name); + holder.tvTime.setText("交易时间:"+time); + Glide.with(mCtx).load(imageurl).into(holder.ivTou); + holder.tvTitle.setText(title); + holder.tvPrice.setText(price+"元"); + holder.tvAmount.setText("x"+amount); + holder.tvAll.setText("共"+amount+"件商品 合计:"+(amount*price)+"元"); + + if (mOnItemClickListener != null) { + holder.tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + + + public class MyViewHolder extends RecyclerView.ViewHolder { + + private TextView tvTitle; + private ImageView ivTou; + private TextView tvTime; + private TextView tvName; + private TextView tvAll; + private TextView tvAmount; + private TextView tvPrice; + + private TextView tvDelete; + + public MyViewHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_item_dingdan_title); + ivTou = itemView.findViewById(R.id.iv_item_dingdan_tou); + tvTime = itemView.findViewById(R.id.tv_item_dingdan_time); + tvName = itemView.findViewById(R.id.tv_item_dingdan_name); + tvAll = itemView.findViewById(R.id.tv_item_dingdan_all); + tvAmount = itemView.findViewById(R.id.tv_item_dingdan_amount); + tvPrice = itemView.findViewById(R.id.tv_item_dingdan_price); + + tvDelete = itemView.findViewById(R.id.tv_item_dingdan_delete); + } + } + + public boolean onItemRemove(int position) { + mList.remove(position); + notifyItemRemoved(position); + return true; + } + + public void onAllRemove() { + mList.clear(); + notifyDataSetChanged(); + } + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/MyVideoAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/MyVideoAdapter.java new file mode 100644 index 0000000..2c98027 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/MyVideoAdapter.java @@ -0,0 +1,88 @@ +package com.fly.guilingl.ui.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +/** + * Created by Fly on 2017/12/14. + */ + +public class MyVideoAdapter extends RecyclerView.Adapter { + + private ArrayList mList; + private Context mContext; + + public MyVideoAdapter(ArrayList list, Context ctx) { + mList = list; + mContext = ctx; + } + + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_video, parent, false); + return new ItemHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + + final ItemHolder viewHolder = (ItemHolder) holder; + + String url = mList.get(position).url; + String content = mList.get(position).title; + String large_cover = mList.get(position).imageUrl; + + viewHolder.videoController.setUp(url, content, Jzvd.SCREEN_WINDOW_NORMAL); + //viewHolder.videoController.thumbImageView.setBackgroundResource(R.mipmap.ic_s1); + Glide.with(mContext).load(large_cover).into(viewHolder.videoController.thumbImageView); + //JzvdStd.startFullscreen(mContext, JzvdStd.class,url , content); + + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + + } + + @Override + public int getItemCount() { + return mList.size(); + } + + class ItemHolder extends RecyclerView.ViewHolder { + + public JzvdStd videoController; + + public ItemHolder(View itemView) { + super(itemView); + videoController = itemView.findViewById(R.id.videocontroller); + } + } + + private OnItemClickListener mOnItemClickListener; + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/WeatherAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/WeatherAdapter.java new file mode 100644 index 0000000..be0275e --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/WeatherAdapter.java @@ -0,0 +1,88 @@ +package com.fly.guilingl.ui.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.DingDanBean; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/14/014. + */ + +public class WeatherAdapter extends RecyclerView.Adapter { + + + private OnItemClickListener mOnItemClickListener; + private Context mCtx; + private ArrayList mList; + + public WeatherAdapter(ArrayList list, Context ctx) { + mCtx = ctx; + mList = list; + } + + @Override + public WeatherAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_catelog_title, parent, false); + return new WeatherAdapter.MyViewHolder(view); + } + + @Override + public void onBindViewHolder(WeatherAdapter.MyViewHolder holder, final int position) { + holder.tvTitle.setText(mList.get(position)); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + + public class MyViewHolder extends RecyclerView.ViewHolder { + + private TextView tvTitle; + + + public MyViewHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv); + + } + } + + public boolean onItemRemove(int position) { + mList.remove(position); + notifyItemRemoved(position); + return true; + } + + public void onAllRemove() { + mList.clear(); + notifyDataSetChanged(); + } + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/WeatherDetailAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/WeatherDetailAdapter.java new file mode 100644 index 0000000..41dd48b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/adapter/WeatherDetailAdapter.java @@ -0,0 +1,90 @@ +package com.fly.guilingl.ui.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.WeatherBean; +import com.fly.guilingl.utils.ParseWeatherDataUtils; + +import org.w3c.dom.Text; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/14/014. + */ + +public class WeatherDetailAdapter extends RecyclerView.Adapter { + + + private ArrayList mList; + + public WeatherDetailAdapter(ArrayList list) { + mList = list; + } + + @Override + public WeatherDetailAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_weather, parent, false); + return new WeatherDetailAdapter.MyViewHolder(view); + } + + @Override + public void onBindViewHolder(WeatherDetailAdapter.MyViewHolder holder, final int position) { + WeatherBean bean = mList.get(position); + holder.tvTime.setText(bean.time + ":"); + + String from = bean.weather_from; + String to = bean.weather_to; + if (from.equals(to)) { + holder.tvWeather.setText(from); + } else { + holder.tvWeather.setText(from + " 转 " + to); + } + + holder.tvValue.setText(bean.temperature_from + " / " + bean.temperature_to); + holder.tvWeek.setText(bean.weekDay + ":"); + holder.tvRiChu.setText("日出" + bean.sunRiseSet_to); + holder.tvRiLuo.setText("日落" + bean.sunRiseSet_from); + holder.tvPre.setText("降雨概率:" + bean.str_pre); + + ParseWeatherDataUtils.setWeatherBackGround(holder.itemView, from); + } + + @Override + public int getItemCount() { + return mList.size(); + } + + + public class MyViewHolder extends RecyclerView.ViewHolder { + + private TextView tvWeather; + private TextView tvValue; + private TextView tvTime; + private TextView tvWeek; + private TextView tvPre; + private TextView tvRiLuo; + private TextView tvRiChu; + + + public MyViewHolder(View itemView) { + super(itemView); + tvWeather = itemView.findViewById(R.id.weather); + tvValue = itemView.findViewById(R.id.value); + tvTime = itemView.findViewById(R.id.tv_time); + tvWeek = itemView.findViewById(R.id.tv_week); + tvPre = itemView.findViewById(R.id.tv_pre); + tvRiLuo = itemView.findViewById(R.id.tv_riluo); + tvRiChu = itemView.findViewById(R.id.tv_richu); + + } + } + + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/BaseDialog.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/BaseDialog.java new file mode 100644 index 0000000..1981c69 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/BaseDialog.java @@ -0,0 +1,40 @@ +package com.fly.guilingl.ui.dialog; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.view.View; + + +/** + * Created by Fly on 2016/12/4. + */ + +public abstract class BaseDialog extends AlertDialog implements View.OnClickListener { + protected BaseDialog(Context context) { + //通过构造指定主题 + //super(context, R.style.style_dialog); + super(context); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + initView(); + initListener(); + initData(); + } + + public abstract void initView(); + + public abstract void initListener(); + + public abstract void initData(); + + public abstract void processClick(View view); + + @Override + public void onClick(View v) { + processClick(v); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/ConfirmDialog.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/ConfirmDialog.java new file mode 100644 index 0000000..a6049b9 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/ConfirmDialog.java @@ -0,0 +1,112 @@ +package com.fly.guilingl.ui.dialog; + +import android.content.Context; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import com.fly.guilingl.R; + + +/** + * Created by Fly on 2016/12/4. + */ + +public class ConfirmDialog extends BaseDialog { + + private TextView tv_dialog_title; + private TextView tv_dialog_body; + private Button bt_dialog_confirm; + private Button bt_dialog_cancel; + + private String title; + private String body; + + private OnConfirmListener onConfirmListener; + + + public void setOnConfirmListener(OnConfirmListener onConfirmListener) { + this.onConfirmListener = onConfirmListener; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getTitle() { + return title; + } + + public void setBody(String body) { + this.body = body; + } + + public String getBody() { + return body; + } + + protected ConfirmDialog(Context context) { + super(context); + } + + public static void showDialog(Context context, String title, String body, OnConfirmListener onConfirmListener) { + ConfirmDialog dialog = new ConfirmDialog(context); + dialog.setTitle(title); + dialog.setBody(body); + dialog.setOnConfirmListener(onConfirmListener); + dialog.show(); + dialog.setCanceledOnTouchOutside(false); +// Window dialogWindow = dialog.getWindow(); +// dialogWindow.setGravity(Gravity.BOTTOM); +// dialogWindow.getDecorView().setPadding(0, 0, 0, 0);//消除边距 +// +// WindowManager.LayoutParams lp = dialogWindow.getAttributes(); +// lp.width = WindowManager.LayoutParams.MATCH_PARENT; +// dialogWindow.setAttributes(lp); + + } + + @Override + public void initView() { + setContentView(R.layout.dialog_confirm); + tv_dialog_title = (TextView) findViewById(R.id.tv_dialog_title); + tv_dialog_body = (TextView) findViewById(R.id.tv_dialog_body); + bt_dialog_confirm = (Button) findViewById(R.id.bt_dialog_confirm); + bt_dialog_cancel = (Button) findViewById(R.id.bt_dialog_cancel); + } + + @Override + public void initListener() { + bt_dialog_confirm.setOnClickListener(this); + bt_dialog_cancel.setOnClickListener(this); + } + + @Override + public void initData() { + tv_dialog_title.setText(title); + tv_dialog_body.setText(body); + } + + @Override + public void processClick(View view) { + switch (view.getId()) { + case R.id.bt_dialog_confirm: + if (onConfirmListener != null) { + onConfirmListener.confirm(); + } + break; + case R.id.bt_dialog_cancel: + if (onConfirmListener != null) { + onConfirmListener.cancel(); + } + break; + } + dismiss(); + } + + public interface OnConfirmListener { + void confirm(); + + void cancel(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/ForgetPwdDialog.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/ForgetPwdDialog.java new file mode 100644 index 0000000..09ad3e9 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/ForgetPwdDialog.java @@ -0,0 +1,90 @@ +package com.fly.guilingl.ui.dialog; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; + +import com.fly.guilingl.R; + + +/** + * Created by Fly on 2017/3/6. + */ + +public class ForgetPwdDialog extends AlertDialog implements View.OnClickListener { + + private TextView tvFind; + private TextView tvMsg; + private TextView tvCancel; + private OnForgetPwdListener forgetPwdListener; + + protected ForgetPwdDialog(Context context) { + super(context); + } + + public static void showDialog(Context context, OnForgetPwdListener forgetPwdListener) { + ForgetPwdDialog dialog = new ForgetPwdDialog(context); + dialog.setForgetPwdListener(forgetPwdListener); + dialog.show(); + + Window window = dialog.getWindow(); + window.setWindowAnimations(R.style.dialog_style); + window.setBackgroundDrawableResource(android.R.color.transparent); + WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + window.setGravity(Gravity.BOTTOM); + window.setAttributes(lp); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_forget_pwd); + initView(); + initData(); + } + + private void initData() { + tvFind.setOnClickListener(this); + tvMsg.setOnClickListener(this); + tvCancel.setOnClickListener(this); + } + + private void initView() { + tvFind = (TextView) findViewById(R.id.tv_dialog_find); + tvMsg = (TextView) findViewById(R.id.tv_dialog_msg); + tvCancel = (TextView) findViewById(R.id.tv_dialog_cancel); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.tv_dialog_find: + forgetPwdListener.onFind(); + break; + case R.id.tv_dialog_msg: + forgetPwdListener.onMessage(); + break; + case R.id.tv_dialog_cancel: + forgetPwdListener.onCancel(); + break; + } + } + + public void setForgetPwdListener(OnForgetPwdListener forgetPwdListener) { + this.forgetPwdListener = forgetPwdListener; + } + + public interface OnForgetPwdListener { + void onFind(); + + void onMessage(); + + void onCancel(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/InputDialog.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/InputDialog.java new file mode 100644 index 0000000..11452a0 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/InputDialog.java @@ -0,0 +1,109 @@ +package com.fly.guilingl.ui.dialog; + +import android.content.Context; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.fly.guilingl.R; + +import java.util.Timer; +import java.util.TimerTask; + + +/** + * Created by Fly on 2016/12/4. + */ + +public class InputDialog extends BaseDialog { + + private EditText et_dialog_input; + private Button bt_dialog_confirm; + private Button bt_dialog_cancel; + private String mKey; + + private OnConfirmListener onConfirmListener; + + public void setOnConfirmListener(OnConfirmListener onConfirmListener) { + this.onConfirmListener = onConfirmListener; + } + + protected InputDialog(Context context) { + super(context); + } + + public static void showDialog(Context context, OnConfirmListener onConfirmListener) { + final InputDialog dialog = new InputDialog(context); + dialog.setOnConfirmListener(onConfirmListener); + dialog.setView(new EditText(context)); + dialog.show(); + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + dialog.showKeyboard(); + } + }, 200); + dialog.setCanceledOnTouchOutside(false); + } + + @Override + public void initView() { + setContentView(R.layout.dialog_input); + et_dialog_input = findViewById(R.id.et_dialog_input); + bt_dialog_confirm = findViewById(R.id.bt_dialog_confirm); + bt_dialog_cancel = findViewById(R.id.bt_dialog_cancel); + } + + @Override + public void initListener() { + bt_dialog_confirm.setOnClickListener(this); + bt_dialog_cancel.setOnClickListener(this); + } + + @Override + public void initData() { + + } + + @Override + public void processClick(View view) { + switch (view.getId()) { + case R.id.bt_dialog_confirm: + if (onConfirmListener != null) { + mKey = et_dialog_input.getText().toString().trim(); + onConfirmListener.confirm(mKey); + } + break; + case R.id.bt_dialog_cancel: + if (onConfirmListener != null) { + onConfirmListener.cancel(); + } + break; + } + dismiss(); + } + + public interface OnConfirmListener { + void confirm(String key); + + void cancel(); + } + + public void showKeyboard() { + if (et_dialog_input != null) { + //设置可获得焦点 + et_dialog_input.setFocusable(true); + et_dialog_input.setFocusableInTouchMode(true); + //请求获得焦点 + et_dialog_input.requestFocus(); + //调用系统输入法 + InputMethodManager inputManager = (InputMethodManager) et_dialog_input + .getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.showSoftInput(et_dialog_input, 0); + } + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/RelaseDialog.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/RelaseDialog.java new file mode 100644 index 0000000..b4fad0a --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/dialog/RelaseDialog.java @@ -0,0 +1,104 @@ +package com.fly.guilingl.ui.dialog; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageView; + +import com.fly.guilingl.R; + + +/** + * Created by Fly on 2017/12/12. + */ + +public class RelaseDialog extends AlertDialog implements View.OnClickListener { + private ImageView ivText; + private ImageView ivPic; + private ImageView ivVideo; + private ImageView ivTiwen; + private ImageView ivBack; + private OnRelaseListener relaseListener; + + protected RelaseDialog(Context context) { + super(context); + } + + public static void showDialog(Context context, OnRelaseListener relaseListener) { + RelaseDialog dialog = new RelaseDialog(context); + dialog.setRelaseListener(relaseListener); + dialog.show(); + + Window window = dialog.getWindow(); + window.setWindowAnimations(R.style.dialog_style); + window.setBackgroundDrawableResource(android.R.color.transparent); + WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + window.setGravity(Gravity.BOTTOM); + window.setAttributes(lp); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_relase); + initView(); + initData(); + } + + private void initData() { + ivBack.setOnClickListener(this); + ivPic.setOnClickListener(this); + ivText.setOnClickListener(this); + ivVideo.setOnClickListener(this); + ivTiwen.setOnClickListener(this); + } + + private void initView() { + ivBack = (ImageView) findViewById(R.id.iv_back); + ivPic = (ImageView) findViewById(R.id.iv_pic); + ivText = (ImageView) findViewById(R.id.iv_text); + ivVideo = (ImageView) findViewById(R.id.iv_video); + ivTiwen = (ImageView) findViewById(R.id.iv_tiwen); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.iv_text: + relaseListener.onText(); + break; + case R.id.iv_pic: + relaseListener.onPic(); + break; + case R.id.iv_video: + relaseListener.onVideo(); + break; + case R.id.iv_tiwen: + relaseListener.onTiwen(); + break; + case R.id.iv_back: + this.dismiss(); + break; + } + } + + public void setRelaseListener(OnRelaseListener relaseListener) { + this.relaseListener = relaseListener; + } + + public interface OnRelaseListener { + void onText(); + + void onPic(); + + void onVideo(); + + void onTiwen(); + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/CatelogAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/CatelogAdapter.java new file mode 100644 index 0000000..8e540bd --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/CatelogAdapter.java @@ -0,0 +1,105 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.GrideData; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Administrator on 2019/1/4/004. + */ + +public class CatelogAdapter extends RecyclerView.Adapter { + private List list; + private CatelogAdapter.OnItemClickListener mOnItemClickListener; + public CatelogAdapter(ArrayList list) { + this.list = list; + } + + @Override + public int getItemViewType(int position) { + return list.get(position).viewType; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == GrideData.TYPE_GRIDE) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_catelog, parent, false); + GrideHolder holder = new GrideHolder(view); + return holder; + } else { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_catelog_title, parent, false); + LinearHolder holder = new LinearHolder(view); + return holder; + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + GrideData grideData = list.get(position); + if (grideData.viewType == GrideData.TYPE_GRIDE) { + GrideHolder holder1 = (GrideHolder) holder; + holder1.setText(list.get(position).data); + + } else { + LinearHolder holder1 = (LinearHolder) holder; + holder1.setText(list.get(position).data); + if (mOnItemClickListener != null) { + holder1.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + } + + @Override + public int getItemCount() { + return list.size(); + } + + public static class GrideHolder extends RecyclerView.ViewHolder { + TextView textView; + + public GrideHolder(View itemView) { + super(itemView); + textView = (TextView) itemView.findViewById(R.id.tv); + } + + public void setText(String text) { + textView.setText(text); + } + } + + public static class LinearHolder extends RecyclerView.ViewHolder { + TextView textView; + + public LinearHolder(View itemView) { + super(itemView); + textView = (TextView) itemView.findViewById(R.id.tv); + } + + public void setText(String text) { + textView.setText(text); + } + } + + public void setOnItemClickListener(CatelogAdapter.OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/DiscoveryAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/DiscoveryAdapter.java new file mode 100644 index 0000000..2fdc010 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/DiscoveryAdapter.java @@ -0,0 +1,84 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/6/006. + */ + +public class DiscoveryAdapter extends RecyclerView.Adapter{ + + private ArrayList mList; + private OnItemClickListener mOnItemClickListener; + public DiscoveryAdapter(ArrayList list) { + mList = list; + } + + + @Override + public DiscoveryAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_discovery, parent, false); + return new MyViewHolder(view); + } + + @Override + public void onBindViewHolder(DiscoveryAdapter.MyViewHolder holder, final int position) { + holder.tvTitle.setText(mList.get(position).title); + holder.tvLeiBie.setText(mList.get(position).leibie2); + Glide.with(UIUtils.getContext()).load(mList.get(position).imageUrl).into(holder.ivImage); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + private TextView tvTitle; + private TextView tvLeiBie; + private ImageView ivImage; + public MyViewHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_discovery_title); + tvLeiBie = itemView.findViewById(R.id.tv_discovery_leibie); + ivImage = itemView.findViewById(R.id.iv_discovery_image); + } + } + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } + + public void notifyCateData(String cate){ + for (int i = 0;i { + + private ArrayList mList; + private ArrayList mXingChengList; + private ArrayList mJiaoTongList; + private OnItemClickListener mOnItemClickListener; + private Context mContext; + + public HomeNextAdapter(Context context, ArrayList list, ArrayList xingChengList, ArrayList jiaoTongList) { + mList = list; + mContext = context; + mXingChengList = xingChengList; + mJiaoTongList = jiaoTongList; + } + + private final int ITEM_JIAOTONG = 1; + private final int ITEM_XINGCHENG = 2; + private final int ITEM_ZHOUBIAN = 3; + private final int ITEM_YOUWAN = 4; + + @Override + public int getItemViewType(int position) { + switch (position) { + case 0: + return ITEM_JIAOTONG; + case 1: + return ITEM_XINGCHENG; + case 2: + return ITEM_ZHOUBIAN; + case 3: + return ITEM_YOUWAN; + } + return -1; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + switch (viewType) { + case ITEM_JIAOTONG: + return new Item1(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_home_next1, parent, false)); + case ITEM_XINGCHENG: + return new Item2(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_home_next2, parent, false)); + case ITEM_ZHOUBIAN: + return new Item3(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_home_next3, parent, false)); + case ITEM_YOUWAN: + return new Item4(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_home_next4, parent, false)); + } + return null; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + if (holder instanceof Item1) { + Item1 viewHolder = (Item1) holder; + setItem1(viewHolder.tv_item1, 0); + setItem1(viewHolder.tv_item2, 1); + setItem1(viewHolder.tv_item3, 2); + setItem1(viewHolder.tv_item4, 3); + setItem1(viewHolder.tv_item5, 4); + setItem1(viewHolder.tv_item6, 5); + setItem1(viewHolder.tv_item7, 6); + setItem1(viewHolder.tv_item8, 7); + setItem1(viewHolder.tv_item9, 8); + setItem1(viewHolder.tv_item10, 9); + + } else if (holder instanceof Item2) { + Item2 viewHolder = (Item2) holder; + setItem2(viewHolder.tv11, viewHolder.iv11, 0); + setItem2(viewHolder.tv12, viewHolder.iv12, 1); + setItem2(viewHolder.tv13, viewHolder.iv13, 2); + setItem2(viewHolder.tv14, viewHolder.iv14, 3); + setItem2(viewHolder.tv15, viewHolder.iv15, 4); + setItem2(viewHolder.tv21, viewHolder.iv21, 5); + setItem2(viewHolder.tv22, viewHolder.iv22, 6); + setItem2(viewHolder.tv23, viewHolder.iv23, 7); + setItem2(viewHolder.tv24, viewHolder.iv24, 8); + setItem2(viewHolder.tv25, viewHolder.iv25, 9); + + } else if (holder instanceof Item3) { + Item3 viewHolder = (Item3) holder; + //viewHolder.tvTitle.setText(mList.get(position).getTitle()); + viewHolder.ll_item_home_next3.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ToastUtils.showToast(mContext, "我是第三个"); + } + }); + + } else if (holder instanceof Item4) { + Item4 viewHolder = (Item4) holder; + //viewHolder.tvTitle.setText(mList.get(position).getTitle()); + + } + +// if (mOnItemClickListener != null) { +// holder.itemView.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// mOnItemClickListener.onItemClick(v, position); +// } +// }); +// } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + + class Item1 extends RecyclerView.ViewHolder { + private TextView tv_item1; + private TextView tv_item2; + private TextView tv_item3; + private TextView tv_item4; + private TextView tv_item5; + private TextView tv_item6; + private TextView tv_item7; + private TextView tv_item8; + private TextView tv_item9; + private TextView tv_item10; + + public Item1(View itemView) { + super(itemView); + tv_item1 = itemView.findViewById(R.id.tv_item1); + tv_item2 = itemView.findViewById(R.id.tv_item2); + tv_item3 = itemView.findViewById(R.id.tv_item3); + tv_item4 = itemView.findViewById(R.id.tv_item4); + tv_item5 = itemView.findViewById(R.id.tv_item5); + tv_item6 = itemView.findViewById(R.id.tv_item6); + tv_item7 = itemView.findViewById(R.id.tv_item7); + tv_item8 = itemView.findViewById(R.id.tv_item8); + tv_item9 = itemView.findViewById(R.id.tv_item9); + tv_item10 = itemView.findViewById(R.id.tv_item10); + } + } + + class Item2 extends RecyclerView.ViewHolder { + private ImageView iv11; + private ImageView iv12; + private ImageView iv13; + private ImageView iv14; + private ImageView iv15; + private TextView tv11; + private TextView tv12; + private TextView tv13; + private TextView tv14; + private TextView tv15; + + private ImageView iv21; + private ImageView iv22; + private ImageView iv23; + private ImageView iv24; + private ImageView iv25; + private TextView tv21; + private TextView tv22; + private TextView tv23; + private TextView tv24; + private TextView tv25; + + public Item2(View itemView) { + super(itemView); + iv11 = itemView.findViewById(R.id.iv_item_home_next2_11); + iv12 = itemView.findViewById(R.id.iv_item_home_next2_12); + iv13 = itemView.findViewById(R.id.iv_item_home_next2_13); + iv14 = itemView.findViewById(R.id.iv_item_home_next2_14); + iv15 = itemView.findViewById(R.id.iv_item_home_next2_15); + tv11 = itemView.findViewById(R.id.tv_item_home_next2_11); + tv12 = itemView.findViewById(R.id.tv_item_home_next2_12); + tv13 = itemView.findViewById(R.id.tv_item_home_next2_13); + tv14 = itemView.findViewById(R.id.tv_item_home_next2_14); + tv15 = itemView.findViewById(R.id.tv_item_home_next2_15); + + iv21 = itemView.findViewById(R.id.iv_item_home_next2_21); + iv22 = itemView.findViewById(R.id.iv_item_home_next2_22); + iv23 = itemView.findViewById(R.id.iv_item_home_next2_23); + iv24 = itemView.findViewById(R.id.iv_item_home_next2_24); + iv25 = itemView.findViewById(R.id.iv_item_home_next2_25); + tv21 = itemView.findViewById(R.id.tv_item_home_next2_21); + tv22 = itemView.findViewById(R.id.tv_item_home_next2_22); + tv23 = itemView.findViewById(R.id.tv_item_home_next2_23); + tv24 = itemView.findViewById(R.id.tv_item_home_next2_24); + tv25 = itemView.findViewById(R.id.tv_item_home_next2_25); + } + } + + class Item3 extends RecyclerView.ViewHolder { + private LinearLayout ll_item_home_next3; + public TextView tvTitle; + + public Item3(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_home_next_title); + ll_item_home_next3 = itemView.findViewById(R.id.ll_item_home_next3); + } + } + + class Item4 extends RecyclerView.ViewHolder { + private TextView tvTitle; + + public Item4(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_home_next_title); + + } + } + + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } + + private void setItem2(TextView tv, ImageView iv, final int pos) { + + tv.setText(mXingChengList.get(pos).title); + //tv.setTextColor(mContext.getColor(R.color.colorBlack)); + Glide.with(mContext).load(mXingChengList.get(pos).imageUrl).into(iv); + iv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //ToastUtils.showToast(mContext,pos+""); + YouJiBean bean = mXingChengList.get(pos); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie", bean.leibie); + bundle.putString("url", bean.url); + bundle.putString("uniquekey", bean.uniquekey); + bundle.putString("imageurl", bean.imageUrl); + Intent intent = new Intent(mContext, DetailActivity.class); + intent.putExtra("bundle", bundle); + mContext.startActivity(intent); + } + }); + } + + private void setItem1(TextView tv, final int pos) { + + tv.setText(mJiaoTongList.get(pos).title); + tv.setTextColor(mContext.getResources().getColor(R.color.colorBlack)); + tv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //ToastUtils.showToast(mContext,pos+""); + YouJiBean bean = mJiaoTongList.get(pos); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie", bean.leibie); + bundle.putString("url", bean.url); + bundle.putString("uniquekey", bean.uniquekey); + bundle.putString("imageurl", bean.imageUrl); + Intent intent = new Intent(mContext, DetailActivity.class); + intent.putExtra("bundle", bundle); + mContext.startActivity(intent); + } + }); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/HomeRecyclerAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/HomeRecyclerAdapter.java new file mode 100644 index 0000000..4a8b26c --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/HomeRecyclerAdapter.java @@ -0,0 +1,153 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.NewsData; + +import java.util.ArrayList; + + +/** + * Created by Fly on 2017/12/14. + */ + +public class HomeRecyclerAdapter extends RecyclerView.Adapter { + + private ArrayList mList; + private final int ITEM_1PIC = 1; + private final int ITEM_3PIC = 2; + private Context mContext; + + public HomeRecyclerAdapter(ArrayList list, Context ctx) { + mList = list; + mContext = ctx; + } + + + @Override + public int getItemViewType(int position) { + + if ("0".equals(mList.get(position).thumbnail_pic_s02) && "0".equals(mList.get(position).thumbnail_pic_s03)) { + return ITEM_1PIC; + } else { + return ITEM_3PIC; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == ITEM_1PIC) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_1pic, parent, false); + return new Item1picHolder(view); + } else if (viewType == ITEM_3PIC) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_3pic, parent, false); + return new Item3picHolder(view); + } + return null; + } + + @Override + public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { + if (holder instanceof Item1picHolder) { + Item1picHolder viewHolder = (Item1picHolder) holder; + viewHolder.tvTitle.setText(mList.get(position).title); + viewHolder.tvAuthor.setText(mList.get(position).author_name); + String imageUrl = mList.get(position).thumbnail_pic_s; + viewHolder.tvDate.setText(mList.get(position).date); + Glide.with(mContext) + .load(imageUrl) + .into(viewHolder.ivImage); + } else if (holder instanceof Item3picHolder) { + Item3picHolder viewHolder = (Item3picHolder) holder; + viewHolder.tvTitle.setText(mList.get(position).title); + viewHolder.tvAuthor.setText(mList.get(position).author_name); + viewHolder.tvDate.setText(mList.get(position).date); + String imageUrl1 = mList.get(position).thumbnail_pic_s; + String imageUrl2 = mList.get(position).thumbnail_pic_s02; + String imageUrl3 = mList.get(position).thumbnail_pic_s03; +// Log.e("imageUrl1", imageUrl1); +// Log.e("imageUrl2", imageUrl2); +// Log.e("imageUrl3", imageUrl3); + Glide.with(mContext) + .load(imageUrl1) + .into(viewHolder.ivImage1); + + Glide.with(mContext) + .load(imageUrl2) + .into(viewHolder.ivImage2); + + Glide.with(mContext) + .load(imageUrl3) + .into(viewHolder.ivImage3); + } + + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + + } + + @Override + public int getItemCount() { + return mList.size(); + } + + class Item1picHolder extends RecyclerView.ViewHolder { + + public TextView tvTitle; + public TextView tvAuthor; + public TextView tvDate; + public ImageView ivImage; + + public Item1picHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_title); + tvAuthor = itemView.findViewById(R.id.tv_author); + tvDate = itemView.findViewById(R.id.tv_date); + ivImage = itemView.findViewById(R.id.iv_image); + } + } + + class Item3picHolder extends RecyclerView.ViewHolder { + + public TextView tvTitle; + public TextView tvAuthor; + public TextView tvDate; + public ImageView ivImage1; + public ImageView ivImage2; + public ImageView ivImage3; + + public Item3picHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_title); + tvAuthor = itemView.findViewById(R.id.tv_author); + tvDate = itemView.findViewById(R.id.tv_date); + ivImage1 = itemView.findViewById(R.id.iv_image1); + ivImage2 = itemView.findViewById(R.id.iv_image2); + ivImage3 = itemView.findViewById(R.id.iv_image3); + } + } + + private OnItemClickListener mOnItemClickListener; + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/JinNangAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/JinNangAdapter.java new file mode 100644 index 0000000..94710b5 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/JinNangAdapter.java @@ -0,0 +1,87 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.ui.activity.ConfirmActivity; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.utils.UIUtils; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class JinNangAdapter extends RecyclerView.Adapter{ + + private ArrayList mList; + private JinNangAdapter.OnItemClickListener mOnItemClickListener; + public JinNangAdapter(ArrayList list) { + mList = list; + } + + @Override + public JinNangAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_jinnang, parent, false); + return new JinNangAdapter.MyViewHolder(view); + } + + @Override + public void onBindViewHolder(JinNangAdapter.MyViewHolder holder, final int position) { + YouJiBean bean = mList.get(position); + + //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + String time = df.format(new Date())+""; + + holder.tvTime.setText(time+"更新"); + holder.tvTitle.setText(bean.title); + Glide.with(UIUtils.getContext()) + .load(bean.imageUrl) + //.load("https://b4-q.mafengwo.net/s12/M00/19/E9/wKgED1uPUgeAEHxQAA36pooyrBY46.jpeg?imageView2%2F2%2Fw%2F680%2Fq%2F90%7CimageMogr2%2Fstrip%2Fquality%2F90") + .into(holder.ivImage); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + private TextView tvTitle; + private ImageView ivImage; + private TextView tvTime; + public MyViewHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_youji_title); + ivImage = itemView.findViewById(R.id.iv_youji_image); + tvTime = itemView.findViewById(R.id.tv_time); + } + } + + public void setOnItemClickListener(JinNangAdapter.OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/Shop1Adapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/Shop1Adapter.java new file mode 100644 index 0000000..e3db699 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/Shop1Adapter.java @@ -0,0 +1,64 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.HomeNextBean; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/8/008. + */ + +public class Shop1Adapter extends RecyclerView.Adapter { + + private ArrayList mList; + private OnItemClickListener mOnItemClickListener; + + public Shop1Adapter(ArrayList list) { + mList = list; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_shop, parent, false); + return new MyHolder(view); + } + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + MyHolder holder1 = (MyHolder) holder; + holder1.tvTitle.setText(mList.get(position)); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + @Override + public int getItemCount() { + return mList.size(); + } + public static class MyHolder extends RecyclerView.ViewHolder { + public TextView tvTitle; + public MyHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_title); + } + } + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/Shop3Adapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/Shop3Adapter.java new file mode 100644 index 0000000..0f80212 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/Shop3Adapter.java @@ -0,0 +1,77 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/8/008. + */ + +public class Shop3Adapter extends RecyclerView.Adapter { + + private ArrayList mList; + public Shop3Adapter(ArrayList list) { + mList = list; + } + private OnItemClickListener mOnItemClickListener; + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_shop3, parent, false); + return new MyHolder(view); + } + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + MyHolder holder1 = (MyHolder) holder; + holder1.tvTitle.setText(mList.get(position).title); + holder1.tvPlace.setText(mList.get(position).place); + holder1.tvName.setText(mList.get(position).name); + holder1.tvPrice.setText(mList.get(position).price); + Glide.with(UIUtils.getContext()).load(mList.get(position).imageurl).into(holder1.ivImage); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + @Override + public int getItemCount() { + return mList.size(); + } + public static class MyHolder extends RecyclerView.ViewHolder { + public TextView tvTitle; + public TextView tvPlace; + public TextView tvName; + public TextView tvPrice; + public ImageView ivImage; + public MyHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_shop3_title); + tvPlace = itemView.findViewById(R.id.tv_shop3_place); + tvName = itemView.findViewById(R.id.tv_shop3_name); + tvPrice = itemView.findViewById(R.id.tv_shop3_price); + ivImage = itemView.findViewById(R.id.iv_shop3); + } + } + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/SmallVideoAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/SmallVideoAdapter.java new file mode 100644 index 0000000..e495918 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/SmallVideoAdapter.java @@ -0,0 +1,88 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.content.Context; +import android.content.pm.ActivityInfo; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +/** + * Created by Fly on 2017/12/14. + */ + +public class SmallVideoAdapter extends RecyclerView.Adapter { + + private ArrayList mList; + private Context mContext; + + public SmallVideoAdapter(ArrayList list, Context ctx) { + mList = list; + mContext = ctx; + } + + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_smallvideo, parent, false); + return new ItemHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + + final ItemHolder viewHolder = (ItemHolder) holder; + + String url = mList.get(position).url; + String content = mList.get(position).title; + String large_cover = mList.get(position).imageUrl; + + viewHolder.videoController.setUp(url, content, Jzvd.SCREEN_WINDOW_NORMAL);//给饺子播放器设置内容 + Glide.with(mContext).load(large_cover).into(viewHolder.videoController.thumbImageView);//加载图片 + + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + + } + + @Override + public int getItemCount() { + return mList.size(); + } + + class ItemHolder extends RecyclerView.ViewHolder { + + public JzvdStd videoController; + + public ItemHolder(View itemView) { + super(itemView); + videoController = itemView.findViewById(R.id.videocontroller); + } + } + + private OnItemClickListener mOnItemClickListener; + + public void setOnItemClickListener(OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/WenDaAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/WenDaAdapter.java new file mode 100644 index 0000000..e407f9d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/WenDaAdapter.java @@ -0,0 +1,90 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.WenDaBean; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + +public class WenDaAdapter extends RecyclerView.Adapter{ + + private ArrayList mList; + private WenDaAdapter.OnItemClickListener mOnItemClickListener; + + public WenDaAdapter(ArrayList list) { + mList = list; + } + + @Override + public WenDaAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_youji, parent, false); + return new WenDaAdapter.MyViewHolder(view); + } + + @Override + public void onBindViewHolder(WenDaAdapter.MyViewHolder holder, final int position) { + WenDaBean bean = mList.get(position); + String url = bean.url; + if (!url.startsWith("http")) { + holder.tvTitle.setText(bean.title + "\n" + url); + } else { + holder.tvTitle.setText(bean.title); + } + Glide.with(UIUtils.getContext()) + .load(bean.imageUrl) + //.load("https://b4-q.mafengwo.net/s12/M00/19/E9/wKgED1uPUgeAEHxQAA36pooyrBY46.jpeg?imageView2%2F2%2Fw%2F680%2Fq%2F90%7CimageMogr2%2Fstrip%2Fquality%2F90") + .into(holder.ivImage); + holder.tvTime.setText(bean.time); + holder.tvAuthor.setText(bean.author); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + public void clearAll() { + mList.clear(); + this.notifyDataSetChanged(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + private TextView tvTitle; + private ImageView ivImage; + private TextView tvTime; + private TextView tvAuthor; + + public MyViewHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_youji_title); + ivImage = itemView.findViewById(R.id.iv_youji_image); + tvTime = itemView.findViewById(R.id.tv_time); + tvAuthor = itemView.findViewById(R.id.tv_author); + } + } + + public void setOnItemClickListener(WenDaAdapter.OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/YouJiAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/YouJiAdapter.java new file mode 100644 index 0000000..69b43a0 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/adapter/YouJiAdapter.java @@ -0,0 +1,94 @@ +package com.fly.guilingl.ui.fragment.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.utils.UIUtils; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/10/010. + */ + +public class YouJiAdapter extends RecyclerView.Adapter { + + private ArrayList mList; + private YouJiAdapter.OnItemClickListener mOnItemClickListener; + + public YouJiAdapter(ArrayList list) { + mList = list; + } + + @Override + public YouJiAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_youji, parent, false); + return new YouJiAdapter.MyViewHolder(view); + } + + @Override + public void onBindViewHolder(YouJiAdapter.MyViewHolder holder, final int position) { + YouJiBean bean = mList.get(position); + String url = bean.url; + if (!url.startsWith("http")) { + holder.tvTitle.setText(bean.title + "\n" + url); + } else { + holder.tvTitle.setText(bean.title); + } + Glide.with(UIUtils.getContext()) + .load(bean.imageUrl) + //.load("https://b4-q.mafengwo.net/s12/M00/19/E9/wKgED1uPUgeAEHxQAA36pooyrBY46.jpeg?imageView2%2F2%2Fw%2F680%2Fq%2F90%7CimageMogr2%2Fstrip%2Fquality%2F90") + .into(holder.ivImage); + holder.tvTime.setText(bean.time); + holder.tvAuthor.setText(bean.author); + if (mOnItemClickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClick(v, position); + } + }); + } + } + + @Override + public int getItemCount() { + return mList.size(); + } + + public void clearAll() { + mList.clear(); + this.notifyDataSetChanged(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + private TextView tvTitle; + private ImageView ivImage; + private TextView tvTime; + private TextView tvAuthor; + + public MyViewHolder(View itemView) { + super(itemView); + tvTitle = itemView.findViewById(R.id.tv_youji_title); + ivImage = itemView.findViewById(R.id.iv_youji_image); + tvTime = itemView.findViewById(R.id.tv_time); + tvAuthor = itemView.findViewById(R.id.tv_author); + } + } + + public void setOnItemClickListener(YouJiAdapter.OnItemClickListener clickListener) { + this.mOnItemClickListener = clickListener; + } + + public interface OnItemClickListener { + void onItemClick(View view, int position); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/base/BaseFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/base/BaseFragment.java new file mode 100644 index 0000000..115253d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/base/BaseFragment.java @@ -0,0 +1,90 @@ +package com.fly.guilingl.ui.fragment.base; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Fragment基类 1. 初始化布局 initView 2. 初始化数据 initData + * + * @author Fly + */ +public abstract class BaseFragment extends Fragment { + + // 此activity就是mainactivity + public AppCompatActivity mActivity; + + // Fragment被创建 + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mActivity = (AppCompatActivity) getActivity();// 获取所在的activity对象 + } + + // 初始化Fragment布局 + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = initView(); + return view; + } + + // activity创建结束 + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + initData(); + } + + /** + * 初始化布局, 子类必须实现 + */ + public abstract View initView(); + + /** + * 初始化数据,可以不必实现 + */ + public void initData() { + + } + + + //Fragment的View加载完毕的标记 + private boolean isLoading = false; + + //Fragment对用户可见的标记 + private boolean isUIVisible; + //setUserVisibleHint和lazyLoad两个方法是为了去除viewPager+fragment的懒加载 + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见 + if (isVisibleToUser) { + isUIVisible = true; + lazyLoad();//调用下面的方法 + } else { + isUIVisible = false; + } + } + + private void lazyLoad() { + //这里进行双重标记判断,是因为setUserVisibleHint会多次回调,并且会在onCreateView执行前回调,必须确保onCreateView加载完毕且页面可见,才加载数据 + if (!isLoading && isUIVisible) { + loadInfo();//加载数据的方法 + //数据加载完毕,恢复标记,防止重复加载 + isLoading = true; + isUIVisible = false; + } + } + + /** + * 去除预加载 + */ + public void loadInfo() { + + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/glfragment/CatalogFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/glfragment/CatalogFragment.java new file mode 100644 index 0000000..6da07d7 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/glfragment/CatalogFragment.java @@ -0,0 +1,83 @@ +package com.fly.guilingl.ui.fragment.glfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.GrideData; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.CateLogActivity; +import com.fly.guilingl.ui.fragment.adapter.CatelogAdapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseCatelogDataUtils; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2019/1/4/004. + */ + +public class CatalogFragment extends BaseFragment { + private View mView; + private RecyclerView mRv; + private ArrayList mList; + + + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_catelog, null); + getDataFromServer(); + + initRV(); + return mView; + } + + /** + * 设置RecyclerView + */ + private void initRV() { + mRv = (RecyclerView) mView.findViewById(R.id.rv); + GridLayoutManager manager = new GridLayoutManager(mActivity,2, LinearLayoutManager.VERTICAL,false); + CatelogAdapter adapter = new CatelogAdapter(mList); + mRv.setAdapter(adapter); + manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + return mList.get(position).spanCount; + } + }); + mRv.setLayoutManager(manager); + adapter.setOnItemClickListener(new CatelogAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + GrideData data = mList.get(position); + String title = data.data; + String url = data.url; + String uniquekey = data.uniquekey; + int type = data.viewType; + + Bundle bundle = new Bundle(); + bundle.putString("title", title); + bundle.putString("url", url); + bundle.putString("uniquekey", uniquekey); + bundle.putInt("type", type); + + Intent intent = new Intent(getContext(), CateLogActivity.class); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + /** + * 获取数据 + */ + public void getDataFromServer() { + String text = Data.readFromRaw(getContext(),R.raw.catelogdate); + mList = ParseCatelogDataUtils.getBean(text); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/glfragment/DiscoveryFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/glfragment/DiscoveryFragment.java new file mode 100644 index 0000000..0629d23 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/glfragment/DiscoveryFragment.java @@ -0,0 +1,152 @@ +package com.fly.guilingl.ui.fragment.glfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.util.Log; +import android.view.View; +import android.widget.ProgressBar; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.fragment.adapter.DiscoveryAdapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.utils.UIUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2019/1/4/004. + */ + +public class DiscoveryFragment extends BaseFragment { + private View mView; + private WrapRecyclerView mRv; + private DiscoveryAdapter mAdapter; + private ArrayList mDiscoveryList; + private ProgressBar progressBar; + + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_discovery, null); + getDataFromServer(); + progressBar = mView.findViewById(R.id.pb); + progressBar.setVisibility(View.VISIBLE); + UIUtils.getHandler().postDelayed(new Runnable() { + @Override + public void run() { + progressBar.setVisibility(View.INVISIBLE); + initRV(); + } + }, 1000); + return mView; + } + + private ArrayList mMiFenList; + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.discovery); + mDiscoveryList = ParseYouJiDataUtils.getBean(txt); + mMiFenList = new ArrayList<>(); + for (int i = 0;i mFragmentMap = new HashMap(); + + public static BaseFragment createFragment(int pos) { + // 先从集合中取, 如果没有,才创建对象, 提高性能 + BaseFragment fragment = mFragmentMap.get(pos); + if (fragment == null) { + switch (pos) { + case 0: + fragment = new CatalogFragment(); + break; + case 1: + fragment = new DiscoveryFragment(); + break; + + } + mFragmentMap.put(pos, fragment);// 将fragment保存在集合中 + } + return fragment; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/homefragment/HomeNextFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/homefragment/HomeNextFragment.java new file mode 100644 index 0000000..b4fea40 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/homefragment/HomeNextFragment.java @@ -0,0 +1,223 @@ +package com.fly.guilingl.ui.fragment.homefragment; + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.design.widget.TabLayout; +import android.support.v4.view.ViewPager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.HomeNextBean; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.activity.JinNangActivity; +import com.fly.guilingl.ui.fragment.adapter.HomeNextAdapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.view.NoScrollRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/6/006. + */ + +public class HomeNextFragment extends BaseFragment implements View.OnClickListener{ + private View mView; + + private TextView tvTixing; + private String tiXing = "2021年张家界市冬季旅游营销系列活动由张家界市人民政府主办,以“冬游张家界 感恩全中国”为主题,以“赏美景、品美食、泡温泉、过赶年”为主打产品,从2021年12月1日开始至2022年2月28日结束,历时3个月。"; + private String tiXingUrl = "http://zjjw.com/activity/show/14134"; + //private String tiXingUrl = "https://imfw.cn/l/4685051"; + private LinearLayout llJinNang; + private LinearLayout llYouJi; + private LinearLayout llZhuanLan; + private LinearLayout llWenDa; + private LinearLayout llJieBan; + private LinearLayout llShiPin; + private String[] mRecommendations = {"交通住宿","行程推荐","周边推荐","游玩攻略"}; + private TabLayout tabLayout; + + + private boolean isScrolled = false; + private RecyclerView recyclerView; + //private NoScrollRecyclerView recyclerView; + private LinearLayoutManager manager; + private HomeNextAdapter mHomeNextAdapter; + private ArrayList mHomeNextList; + + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_home_next, null); + initTop(); + initTiXing(); + initTable(); + return mView; + } + + private ArrayList mXingChengList; + private ArrayList mJiaoTongList; + private void initTable() { + getData(); + tabLayout = mView.findViewById(R.id.tb_home_next_fragment); + recyclerView = mView.findViewById(R.id.rv_home_next_fragment); + manager = new LinearLayoutManager(getContext()); + recyclerView.setLayoutManager(manager); + mHomeNextAdapter = new HomeNextAdapter(mActivity, mHomeNextList, mXingChengList,mJiaoTongList); + recyclerView.setAdapter(mHomeNextAdapter); + + for (int i = 0; i < mHomeNextList.size(); i++) { + TabLayout.Tab tab = tabLayout.newTab(); + tab.setText(mHomeNextList.get(i).getTitle()); + tabLayout.addTab(tab); + } + + recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + + if (newState == 0) { + isScrolled = false; + } + } + + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + + if (!isScrolled) { + LinearLayoutManager l = (LinearLayoutManager) recyclerView.getLayoutManager(); + int firstPosition = l.findFirstVisibleItemPosition(); + tabLayout.setScrollPosition(firstPosition, 0f, true); + } + + } + }); + + tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + + isScrolled = true; + int position = tab.getPosition(); + LinearLayoutManager l = (LinearLayoutManager) recyclerView.getLayoutManager(); + int firstPosition = l.findFirstVisibleItemPosition(); + int lastPosition = l.findLastVisibleItemPosition(); + if (position > lastPosition) { + recyclerView.smoothScrollToPosition(position); + } else if (position < firstPosition) { + recyclerView.smoothScrollToPosition(position); + } else { + int top = recyclerView.getChildAt(position - firstPosition).getTop(); + recyclerView.smoothScrollBy(0, top); + } + + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } + }); + } + + + private void getData() { + mHomeNextList = new ArrayList<>(); + for (int i = 0; i < mRecommendations.length; i++) { + HomeNextBean bean = new HomeNextBean(mRecommendations[i]); + mHomeNextList.add(bean); + } + String xingcheng = Data.readFromRaw(mActivity,R.raw.xingchengtuijian); + mXingChengList = ParseYouJiDataUtils.getBean(xingcheng); + + String jiaotong = Data.readFromRaw(mActivity,R.raw.jiaotongzhusu); + mJiaoTongList = ParseYouJiDataUtils.getBean(jiaotong); + + + } + + + private void initTiXing() { + tvTixing = mView.findViewById(R.id.tv_tixing); + tvTixing.setText(tiXing); + tvTixing.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Bundle bundle = new Bundle(); + bundle.putString("title","【2019】最新提醒"); + bundle.putString("url",tiXingUrl); + bundle.putString("uniquekey","tixing2019"); + bundle.putString("leibie","提醒"); + String imageurl = "http://f1.diyitui.com/65/df/88/56/ab/2b/67/c9/c0/7d/51/f8/cb/0c/9e/bc.jpg"; + bundle.putString("imageurl", imageurl); + Intent intent = new Intent(getContext(), DetailActivity.class); + intent.putExtra("bundle",bundle); + startActivity(intent); + } + }); + } + + private void initTop() { + llJinNang = mView.findViewById(R.id.ll_jinnang); + llYouJi = mView.findViewById(R.id.ll_youji); + llZhuanLan = mView.findViewById(R.id.ll_zhuanlan); + llWenDa = mView.findViewById(R.id.ll_wenda); + llJieBan = mView.findViewById(R.id.ll_jieban); + llShiPin = mView.findViewById(R.id.ll_shipin); + + llJinNang.setOnClickListener(this); + llYouJi.setOnClickListener(this); + llZhuanLan.setOnClickListener(this); + llWenDa.setOnClickListener(this); + llJieBan.setOnClickListener(this); + llShiPin.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.ll_jinnang: + setSelect(0); + break; + case R.id.ll_youji: + setSelect(1); + break; + case R.id.ll_zhuanlan: + setSelect(2); + break; + case R.id.ll_wenda: + setSelect(3); + break; + case R.id.ll_jieban: + setSelect(4); + break; + case R.id.ll_shipin: + setSelect(5); + break; + } + } + + private void setSelect(int pos){ + //ToastUtils.showToast(getContext(),pos+""); + Intent intent = new Intent(getContext(), JinNangActivity.class); + intent.putExtra("pos",pos); + startActivity(intent); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/homefragment/ZhiFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/homefragment/ZhiFragment.java new file mode 100644 index 0000000..4d69057 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/homefragment/ZhiFragment.java @@ -0,0 +1,99 @@ +package com.fly.guilingl.ui.fragment.homefragment; + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.db.dao.YouJiDao; +import com.fly.guilingl.ui.activity.TongZhiActivity; +import com.fly.guilingl.ui.activity.YouJiActivity; +import com.fly.guilingl.ui.activity.YouJiDetailActivity; +import com.fly.guilingl.ui.activity.YouJiEditorActivity; +import com.fly.guilingl.ui.fragment.adapter.YouJiAdapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; + +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/6/006. + */ + +public class ZhiFragment extends BaseFragment { + private ArrayList mList; + private WrapRecyclerView rvYouJi; + private YouJiAdapter mAdapter; + private YouJiDao mYouJiDao; + private Toolbar toolbar; + //private TextView tvDelete; + //private Button tvAdd; + private String mAccount; + private View mview; + + + public View initView() { + //super.onCreate(savedInstanceState); + mview =View.inflate(getContext(), R.layout.fragment_zhi, null); + mAccount = PrefUtils.getString("account", "admin", mview.getContext()); + getDataFromSQl(); + initToolbar(); + rvYouJi = mview.findViewById(R.id.rv_youji2); + mAdapter = new YouJiAdapter(mList); + rvYouJi.setLayoutManager(new LinearLayoutManager(mview.getContext())); + rvYouJi.addItemDecoration(new DividerItemDecoration(mview.getContext(), DividerItemDecoration.VERTICAL)); + rvYouJi.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new YouJiAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + Intent intent = new Intent(getActivity(), YouJiDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title", mList.get(position).title); + bundle.putString("url", mList.get(position).url); + bundle.putString("author", mList.get(position).author); + bundle.putString("time", mList.get(position).time); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + return mview; + } + + private void initToolbar() { + toolbar = mview.findViewById(R.id.toolbar2); + //tvDelete = findViewById(R.id.tv_delete); + //tvAdd = mview.findViewById(R.id.tv_add); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mAdapter = new YouJiAdapter(mList); + } + }); + + } + + private void getDataFromSQl() { + mYouJiDao = YouJiDao.getInstance(mview.getContext()); + mList = mYouJiDao.findAll(); + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/FragmentFactory.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/FragmentFactory.java new file mode 100644 index 0000000..2821efb --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/FragmentFactory.java @@ -0,0 +1,43 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; + +import com.fly.guilingl.ui.fragment.base.BaseFragment; + + +import java.util.HashMap; + +/** + * 生产fragment工厂 + */ +public class FragmentFactory { + + private static HashMap mFragmentMap = new HashMap(); + + public static BaseFragment createFragment(int pos) { + // 先从集合中取, 如果没有,才创建对象, 提高性能 + BaseFragment fragment = mFragmentMap.get(pos); + if (fragment == null) { + switch (pos) { + case 0: + fragment = new JinNangFragment(); + break; + case 1: + fragment = new YouJiFragment(); + break; + case 2: + fragment = new ZhuanLanFragment(); + break; + case 3: + fragment = new WenDaFragment(); + break; + case 4: + fragment = new JieBanFragment(); + break; + case 5: + fragment = new ShiPinFragment(); + break; + } + mFragmentMap.put(pos, fragment);// 将fragment保存在集合中 + } + return fragment; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/JieBanFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/JieBanFragment.java new file mode 100644 index 0000000..35a2068 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/JieBanFragment.java @@ -0,0 +1,24 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; + +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.ui.fragment.base.BaseFragment; + +/** + * Created by Fly on 2019/1/7/007. + */ + +public class JieBanFragment extends BaseFragment { + private View mView; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_jinnang, null); + return mView; + } + + @Override + public void initData() { + super.initData(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/JinNangFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/JinNangFragment.java new file mode 100644 index 0000000..0c5dbef --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/JinNangFragment.java @@ -0,0 +1,77 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.fragment.adapter.JinNangAdapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/7/007. + */ + +public class JinNangFragment extends BaseFragment { + private View mView; + private ArrayList mList; + private WrapRecyclerView rvYouJi; + private JinNangAdapter mAdapter; + + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_jinnang, null); + getDataFromServer(); + + rvYouJi = mView.findViewById(R.id.rv_youji); + mAdapter = new JinNangAdapter(mList); + rvYouJi.setLayoutManager(new LinearLayoutManager(getContext())); + rvYouJi.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + + addHeadView(); + + rvYouJi.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new JinNangAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + Intent intent = new Intent(mActivity, DetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title", mList.get(position).title); + bundle.putString("url", mList.get(position).url); + bundle.putString("uniquekey", mList.get(position).uniquekey); + bundle.putString("leibie", mList.get(position).leibie); + String imageurl = mList.get(position).imageUrl; + bundle.putString("imageurl", imageurl); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + return mView; + } + + + private void addHeadView() { + View headView = View.inflate(mActivity, R.layout.item_jinnang_header, null); + TextView tv = headView.findViewById(R.id.tv_jinnang_name); + tv.setText("锦囊"); + rvYouJi.addHeaderView(headView); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(getContext(), R.raw.jinnangdata); + mList = ParseYouJiDataUtils.getBean(txt); + + //mList = new ArrayList<>(); + + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/ShiPinFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/ShiPinFragment.java new file mode 100644 index 0000000..5dc7968 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/ShiPinFragment.java @@ -0,0 +1,62 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; + +import android.content.pm.ActivityInfo; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.fragment.adapter.SmallVideoAdapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + + +/** + * Created by Fly on 2019/1/7/007. + */ + +public class ShiPinFragment extends BaseFragment { + private View mView; + private ArrayList mList; + private WrapRecyclerView rvSHiPin; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_jinnang, null); + getFromServer(); + rvSHiPin = mView.findViewById(R.id.rv_youji); + rvSHiPin.setLayoutManager(new GridLayoutManager(getContext(),2)); + //addHeadView(); + SmallVideoAdapter adapter = new SmallVideoAdapter(mList,getContext()); + rvSHiPin.setAdapter(adapter); + return mView; + } + + private void addHeadView() { + View headView = View.inflate(mActivity, R.layout.item_jinnang_header, null); + TextView tv = headView.findViewById(R.id.tv_jinnang_name); + tv.setText("抖音桂林"); + rvSHiPin.addHeaderView(headView); + } + + private void getFromServer() { + String txt = Data.readFromRaw(getContext(),R.raw.smallvideo); + mList = ParseYouJiDataUtils.getBean(txt); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } + + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/WenDaFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/WenDaFragment.java new file mode 100644 index 0000000..242fef6 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/WenDaFragment.java @@ -0,0 +1,100 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; +import com.fly.guilingl.ui.activity.WenDaDetailActivity; +import com.fly.guilingl.ui.activity.WenDaEditorActivity; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.WenDaBean; +import com.fly.guilingl.db.dao.WenDaDao; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.StatusBarUtils; +import com.fly.guilingl.view.WrapRecyclerView; +import com.fly.guilingl.ui.fragment.adapter.WenDaAdapter; + + +import java.util.ArrayList; + +public class WenDaFragment extends BaseFragment { + private ArrayList mList; + private WrapRecyclerView rvYouJi; + private WenDaAdapter mAdapter; + private WenDaDao mWenDaDao; + private Toolbar toolbar; + private TextView tvDelete; + private TextView tvAdd; + private String mAccount; + private View mview; + + @Override + public View initView() { + //super.onCreate(savedInstanceState); + //setContentView(R.layout.activity_wenda); + mview = View.inflate(mActivity, R.layout.fragment_wenda, null); + //StatusBarUtils.StatusBarLightMode(mview.getContext()); + mAccount = PrefUtils.getString("account", "admin", mview.getContext()); + getDataFromSQl(); + initToolbar(); + rvYouJi = mview.findViewById(R.id.rv_youji); + mAdapter = new WenDaAdapter(mList); + rvYouJi.setLayoutManager(new LinearLayoutManager(mview.getContext())); + rvYouJi.addItemDecoration(new DividerItemDecoration(mview.getContext(), DividerItemDecoration.VERTICAL)); + rvYouJi.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new WenDaAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + Intent intent = new Intent(getActivity(), WenDaDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title", mList.get(position).title); + bundle.putString("url", mList.get(position).url); + bundle.putString("author", mList.get(position).author); + bundle.putString("time", mList.get(position).time); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + return mview; + } + + + + private void initToolbar() { + toolbar = mview.findViewById(R.id.toolbar); + tvDelete = mview.findViewById(R.id.tv_delete); + tvAdd = mview.findViewById(R.id.tv_add); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ; + } + }); + + tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mWenDaDao.deleteAll(mAccount); + mAdapter.clearAll(); + } + }); + tvAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getActivity(), WenDaEditorActivity.class); + startActivity(intent); + } + }); + } + + private void getDataFromSQl() { + mWenDaDao = WenDaDao.getInstance(mview.getContext()); + mList = mWenDaDao.findAll(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/YouJiFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/YouJiFragment.java new file mode 100644 index 0000000..f44f00f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/YouJiFragment.java @@ -0,0 +1,71 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; +import com.fly.guilingl.ui.fragment.adapter.YouJiAdapter; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/7/007. + */ + +public class YouJiFragment extends BaseFragment { + private View mView; + private ArrayList mList; + private WrapRecyclerView rvYouJi; + private YouJiAdapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_jinnang, null); + getDataFromServer(); + rvYouJi = mView.findViewById(R.id.rv_youji); + mAdapter = new YouJiAdapter(mList); + rvYouJi.setLayoutManager(new LinearLayoutManager(getContext())); + rvYouJi.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + + addHeadView(); + + rvYouJi.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new YouJiAdapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + Intent intent = new Intent(mActivity, DetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title",mList.get(position).title); + bundle.putString("url",mList.get(position).url); + bundle.putString("uniquekey",mList.get(position).uniquekey); + bundle.putString("leibie",mList.get(position).leibie); + String imageurl = mList.get(position).imageUrl; + bundle.putString("imageurl", imageurl); + intent.putExtra("bundle",bundle); + startActivity(intent); + } + }); + return mView; + } + + private void addHeadView() { + View headView = View.inflate(mActivity, R.layout.item_jinnang_header, null); + TextView tv = headView.findViewById(R.id.tv_jinnang_name); + tv.setText("游记"); + rvYouJi.addHeaderView(headView); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(getContext(),R.raw.youjidata); + mList = ParseYouJiDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/ZhuanLanFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/ZhuanLanFragment.java new file mode 100644 index 0000000..fae456c --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/jinnangfragment/ZhuanLanFragment.java @@ -0,0 +1,24 @@ +package com.fly.guilingl.ui.fragment.jinnangfragment; + +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.ui.fragment.base.BaseFragment; + +/** + * Created by Fly on 2019/1/7/007. + */ + +public class ZhuanLanFragment extends BaseFragment { + private View mView; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_jinnang, null); + return mView; + } + + @Override + public void initData() { + super.initData(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/GLFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/GLFragment.java new file mode 100644 index 0000000..831028d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/GLFragment.java @@ -0,0 +1,112 @@ +package com.fly.guilingl.ui.fragment.main; + + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Color; +import android.os.Build; +import android.support.design.widget.AppBarLayout; +import android.support.design.widget.CoordinatorLayout; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; + + +import com.fly.guilingl.R; +import com.fly.guilingl.ui.activity.SearchGLActivity; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.ui.fragment.glfragment.FragmentFactory; + + +/** + * Created by Fly on 2017/12/12. + */ + +public class GLFragment extends BaseFragment { + private View mView; + private TabLayout tabLayout; + private ViewPager viewPager; + private String[] title = {"目录","发现"}; + private MyPagerAdapter adapter; + private TextView tvSearchGL; + + + @Override + public View initView() { + mView = View.inflate(getContext(), R.layout.fragment_gl, null); + initSearchGL(); + initTabLayout(); + return mView; + } + + /** + * 设置Tablayout导航栏 + */ + private void initTabLayout() { + tabLayout = (TabLayout) mView.findViewById(R.id.tablayout); + viewPager = (ViewPager) mView.findViewById(R.id.vp); + adapter = new MyPagerAdapter(getChildFragmentManager()); + viewPager.setAdapter(adapter); + tabLayout.setupWithViewPager(viewPager); + } + + + /** + *初始化搜索攻略 + */ + private void initSearchGL() { + tvSearchGL = mView.findViewById(R.id.tv_search_gl); + tvSearchGL.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getContext(), SearchGLActivity.class); + startActivity(intent); + } + }); + } + + BaseFragment f; + /** + * viewPager的adapter + */ + class MyPagerAdapter extends FragmentPagerAdapter { + + public MyPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public CharSequence getPageTitle(int position) { + return title[position]; + } + + @Override + public Fragment getItem(int position) { + f = FragmentFactory.createFragment(position); + return f; + + } + + @Override + public int getCount() { + return title.length; + } + } + public void setImgTransparent(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(Color.TRANSPARENT); + window.setNavigationBarColor(Color.TRANSPARENT); + } + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/HomeFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/HomeFragment.java new file mode 100644 index 0000000..9a81234 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/HomeFragment.java @@ -0,0 +1,366 @@ +package com.fly.guilingl.ui.fragment.main; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.WeatherBean; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.http.Url; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.activity.WeatherDetailActivity; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.ui.fragment.homefragment.HomeNextFragment; +import com.fly.guilingl.ui.fragment.homefragment.ZhiFragment; +import com.fly.guilingl.ui.fragment.jinnangfragment.WenDaFragment; +import com.fly.guilingl.utils.ParseWeatherDataUtils; +import com.fly.guilingl.utils.ParseYouJiDataUtils; +import com.fly.guilingl.utils.UIUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.StringCallback; + +import java.net.URI; +import java.util.ArrayList; + +import okhttp3.Call; +import okhttp3.Response; + + +/** + * 首页页面搭建. + */ + +public class HomeFragment extends BaseFragment implements View.OnClickListener { + + // 图片标题集合 + private ArrayList mShouYeList; + private int mPreviousPos;// 上一个页面位置 + private View mView; + private ViewPager vpPagerTop; + private TextView tvTitleTop; + private LinearLayout llContainerTop; + + private TextView tvHome; + private TextView tvZhi; + private TextView tvWen; + private Fragment mTab01; + private Fragment mTab02; + private Fragment mTab03; + private FrameLayout flHome; + + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_home, null); + initWeather(); + initImageData(); + initScrollPage(); + initHome(); + return mView; + } + + private void initWeather() { + + TextView tvWeather = mView.findViewById(R.id.tv_weather); + tvWeather.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getContext(), WeatherDetailActivity.class); + startActivity(intent); + } + }); + getWeatherInfoFromServer(tvWeather); + } + + private String getWeatherInfoFromServer(final TextView tv) { + OkGo.get(Url.weatherUrl).tag(this).cacheKey("weather").execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + final WeatherBean bean = ParseWeatherDataUtils.getBean(s); + UIUtils.runOnUIThread(new Runnable() { + @Override + public void run() { + tv.setText("张家界" + bean.current_temperature); + } + }); + } + }); + return null; + } + + private void initHome() { + flHome = mView.findViewById(R.id.fl_home); + tvHome = mView.findViewById(R.id.tv_home); + tvZhi = mView.findViewById(R.id.tv_zhi); + tvWen=mView.findViewById(R.id.tv_wenda1); + tvHome.setOnClickListener(this); + tvZhi.setOnClickListener(this); + tvWen.setOnClickListener(this); + setSelect(0); + } + + @Override + public void onClick(View view) { + resetImgs(); + switch (view.getId()) { + case R.id.tv_home: + setSelect(0); + break; + case R.id.tv_zhi: + setSelect(1); + break; + case R.id.tv_wenda1: + setSelect(2); + break; + } + } + + private void setSelect(int i) { + FragmentManager fm = getChildFragmentManager(); + FragmentTransaction transaction = fm.beginTransaction(); + hideFragment(transaction); + // 把图片设置为亮的 + // 设置内容区域 + switch (i) { + case 0: + if (mTab01 == null) { + mTab01 = new HomeNextFragment(); + transaction.add(R.id.fl_home, mTab01); + } else { + transaction.show(mTab01); + } + tvHome.setTextColor(getResources().getColor(R.color.colorWhite)); + tvHome.setBackgroundResource(R.color.colorAccent); + break; + case 1: + if (mTab02 == null) { + mTab02 = new ZhiFragment(); + transaction.add(R.id.fl_home, mTab02); + } else { + transaction.show(mTab02); + + } + + tvZhi.setTextColor(getResources().getColor(R.color.colorWhite)); + tvZhi.setBackgroundResource(R.color.colorAccent); + break; + case 2: + if (mTab03 == null) { + mTab03 = new WenDaFragment(); + transaction.add(R.id.fl_home, mTab03); + } else { + transaction.show(mTab03); + + } + + tvWen.setTextColor(getResources().getColor(R.color.colorWhite)); + tvWen.setBackgroundResource(R.color.colorAccent); + break; + + + } + + transaction.commit(); + } + + private void hideFragment(FragmentTransaction transaction) { + if (mTab01 != null) { + transaction.hide(mTab01); + } + if (mTab02 != null) { + transaction.hide(mTab02); + } + if (mTab03 != null) { + transaction.hide(mTab03); + } + } + + + /** + * 切换图片至暗色 + */ + private void resetImgs() { + tvZhi.setBackgroundResource(R.drawable.txt_sharp); + tvZhi.setTextColor(getResources().getColor(R.color.colorBlack)); + tvHome.setTextColor(getResources().getColor(R.color.colorBlack)); + tvHome.setBackgroundResource(R.drawable.txt_sharp); + tvWen.setTextColor(getResources().getColor(R.color.colorBlack)); + tvWen.setBackgroundResource(R.drawable.txt_sharp); + } + + + /** + * 初始化图片 + */ + private void initImageData() { + String txt = Data.readFromRaw(mActivity, R.raw.shouye); + mShouYeList = ParseYouJiDataUtils.getBean(txt); + + } + + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + int currentItem = vpPagerTop.getCurrentItem();// 获取当前页面位置 + currentItem++; + vpPagerTop.setCurrentItem(currentItem);// 跳到下一个页面 + // 继续发送延时2秒的消息, 形成类似递归的效果, 使广告一直循环切换 + mHandler.sendEmptyMessageDelayed(0, 3000); + } + }; + + /** + * 设置轮播图 + */ + private void initScrollPage() { + + vpPagerTop = (ViewPager) mView.findViewById(R.id.vp_pager_top); + tvTitleTop = (TextView) mView.findViewById(R.id.tv_title_top); + llContainerTop = (LinearLayout) mView.findViewById(R.id.ll_container_top); + vpPagerTop.setAdapter(new TopPicAdapter()); + vpPagerTop.setCurrentItem(mShouYeList.size() * 10000); + + // 设置滑动监听 + vpPagerTop.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + + // 某个页面被选中 + @Override + public void onPageSelected(int position) { + int pos = position % mShouYeList.size(); + tvTitleTop.setText(mShouYeList.get(pos).title);// 更新新闻标题 + + // 更新小圆点 + llContainerTop.getChildAt(pos).setEnabled(true);// 将选中的页面的圆点设置为红色 + // 将上一个圆点变成灰色 + llContainerTop.getChildAt(mPreviousPos).setEnabled(false); + + // 更新上一个页面位置 + mPreviousPos = pos; + } + + @Override + public void onPageScrolled(int position, float positionOffset, + int positionOffsetPixels) { + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + // 初始化新闻标题 + tvTitleTop.setText(mShouYeList.get(0).title); + // 动态添加5个小圆点 + for (int i = 0; i < mShouYeList.size(); i++) { + ImageView view = new ImageView(getContext()); + view.setImageResource(R.drawable.shape_point_selector); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT); + + if (i != 0) {// 从第2个圆点开始设置左边距, 保证圆点之间的间距 + params.leftMargin = 6; + view.setEnabled(false);// 设置不可用, 变为灰色圆点 + } + view.setLayoutParams(params); + llContainerTop.addView(view); + } + ; + mHandler.sendEmptyMessageDelayed(0, 3000); + + vpPagerTop.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mHandler.removeCallbacksAndMessages(null);// 清除所有消息和Runnable对象 + mHandler.removeMessages(0); + break; + case MotionEvent.ACTION_MOVE: + mHandler.removeMessages(0); + case MotionEvent.ACTION_UP: + // 继续轮播广告 + mHandler.sendEmptyMessageDelayed(0, 3000); + break; + } + return false; + } + }); + + } + + + class TopPicAdapter extends PagerAdapter { + + // 返回item的个数 + @Override + public int getCount() { + // return mImageIds.length; + return Integer.MAX_VALUE; + } + + // 判断当前要展示的view和返回的object是否是一个对象, 如果是,才展示 + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + // 类似getView方法, 初始化每个item的布局, viewpager默认自动加载前一张和后一张图片, 保证始终保持3张图片, + // 剩余的都需要销毁 + @Override + public Object instantiateItem(ViewGroup container, final int position) { + int pos = position % mShouYeList.size(); + ImageView view = new ImageView(getContext()); + view.setScaleType(ImageView.ScaleType.FIT_XY); + Glide.with(getContext()).load(mShouYeList.get(pos).imageUrl).into(view); + + + final YouJiBean bean = mShouYeList.get(pos); + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(mActivity, DetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("uniquekey", bean.uniquekey); + bundle.putString("url", bean.url); + bundle.putString("leibie", "首页"); + String imageurl = bean.imageUrl; + bundle.putString("imageurl", imageurl); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + //view.setBackgroundResource(imageList.get(pos)); + // 将item的布局添加给容器 + container.addView(view); + return view;// 返回item的布局对象 + } + + // item销毁的回调方法 + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + // 从容器中移除布局对象 + container.removeView((View) object); + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/MineFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/MineFragment.java new file mode 100644 index 0000000..bda5099 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/MineFragment.java @@ -0,0 +1,308 @@ +package com.fly.guilingl.ui.fragment.main; + + +import android.content.Intent; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.fly.guilingl.R; +import com.fly.guilingl.ui.activity.CollectionActivity; +import com.fly.guilingl.ui.activity.DingDanActivity; +import com.fly.guilingl.ui.activity.HistoryActivity; +import com.fly.guilingl.ui.activity.LoginActivity; +import com.fly.guilingl.ui.activity.MyVideoActivity; +import com.fly.guilingl.ui.activity.SettingActivity; +import com.fly.guilingl.ui.activity.TongZhiActivity; +import com.fly.guilingl.ui.activity.YouJiActivity; +import com.fly.guilingl.ui.activity.WenDaActivity; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.PrefUtils; +import com.fly.guilingl.utils.ToastUtils; +import com.fly.guilingl.view.SettingItemClickView; + +import de.hdodenhof.circleimageview.CircleImageView; + + +/** + * Created by Fly on 2017/12/12. + */ + +public class MineFragment extends BaseFragment { + private View mView; + private ImageView ivMineSetting; + private ImageView ivMineTongZhi; + + private CircleImageView ivMineTouXiang; + private LinearLayout llMineTitle; + private TextView tvMineTitle; + private TextView tvMineChengHao; + + private LinearLayout llMineCollection; + private LinearLayout llMineDingDan; + private LinearLayout llMineHistory; + + + private SettingItemClickView sivJinNang; + private SettingItemClickView sivWenDa; + private SettingItemClickView sivYouJi; + private SettingItemClickView sivJieBan; + private SettingItemClickView sivShiPin; + //private SettingItemClickView sivCode; + + private String mAccount; + + private TextView llLogin; + private LinearLayout llAccount; + private LinearLayout llGuanZhu; + + + @Override + public View initView() { + mView = View.inflate(getContext(), R.layout.fragment_mine, null); + mAccount = PrefUtils.getString("account", "admin", getContext()); + llLogin = mView.findViewById(R.id.ll_mine_login); + llAccount = mView.findViewById(R.id.ll_mine_account); + llGuanZhu = mView.findViewById(R.id.ll_mine_guanzhu); + + if (!mAccount.equals("游客")) { + initTopSetting(true); + initTitleSetting(true); + initBottomSetting(true); + llLogin.setVisibility(View.GONE); + llGuanZhu.setVisibility(View.VISIBLE); + llAccount.setVisibility(View.VISIBLE); + } else { + initTopSetting(false); + initTitleSetting(false); + initBottomSetting(false); + llLogin.setVisibility(View.VISIBLE); + llGuanZhu.setVisibility(View.GONE); + llAccount.setVisibility(View.GONE); + llLogin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getContext(), LoginActivity.class); + startActivity(intent); + getActivity().finish(); + } + }); + } + + return mView; + } + + private void initTitleSetting(boolean boo) { + ivMineTouXiang = mView.findViewById(R.id.iv_mine_touxiang); + llMineTitle = mView.findViewById(R.id.ll_mine_title); + tvMineTitle = mView.findViewById(R.id.tv_mine_title); + tvMineChengHao = mView.findViewById(R.id.tv_mine_chenghao); + + ivMineTouXiang.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ToastUtils.showToast(getContext(), "头像"); + } + }); + + tvMineTitle.setText(mAccount); + llMineTitle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ToastUtils.showToast(getContext(), "title"); + } + }); + } + + private void initTopSetting(final boolean boo) { + ivMineSetting = mView.findViewById(R.id.iv_mine_setting); + ivMineTongZhi = mView.findViewById(R.id.iv_mine_tongzhi); + ivMineSetting.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, SettingActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + + ivMineTongZhi.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, TongZhiActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + } + }); + } + + private void initBottomSetting(final boolean boo) { + llMineCollection = mView.findViewById(R.id.ll_mine_collection); + llMineDingDan = mView.findViewById(R.id.ll_mine_dingdan); + llMineHistory = mView.findViewById(R.id.ll_mine_history); + llMineCollection.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, CollectionActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + llMineDingDan.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, DingDanActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + } + }); + llMineHistory.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, HistoryActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + } + }); + initJinNang(boo); + initWenDa(boo); + initYouJi(boo); + initJieBan(boo); + initShiPin(boo); + //initCode(boo); + } + + /**private void initCode(final boolean boo) { + sivCode = mView.findViewById(R.id.siv_code); + sivCode.setTitle("源代码"); + sivCode.setIvTitle(R.mipmap.ic_code); + sivCode.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(getContext(), YuanActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + }*/ + + private void initShiPin(final boolean boo) { + sivYouJi = mView.findViewById(R.id.siv_youji); + sivYouJi.setTitle("我的游记"); + sivYouJi.setIvTitle(R.mipmap.ic_youji); + sivYouJi.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, YouJiActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + } + + private void initJieBan(final boolean boo) { + sivJieBan = mView.findViewById(R.id.siv_jieban); + sivJieBan.setTitle("我的结伴"); + sivJieBan.setIvTitle(R.mipmap.ic_jieban); + sivJieBan.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, MyVideoActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + } + + private void initYouJi(final boolean boo) { + sivShiPin = mView.findViewById(R.id.siv_shipin); + sivShiPin.setTitle("我的视频"); + sivShiPin.setIvTitle(R.mipmap.ic_shipin); + sivShiPin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, MyVideoActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + } + + private void initWenDa(final boolean boo) { + sivWenDa = mView.findViewById(R.id.siv_wenda); + sivWenDa.setTitle("我的问答"); + sivWenDa.setIvTitle(R.mipmap.ic_wenda); + sivWenDa.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (boo) { + Intent intent = new Intent(mActivity, WenDaActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + + } + }); + } + + private void initJinNang(final boolean boo) { + sivJinNang = mView.findViewById(R.id.siv_jinnang); + sivJinNang.setTitle("我的锦囊"); + sivJinNang.setIvTitle(R.mipmap.ic_jinnang); + sivJinNang.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + if (boo) { + Intent intent = new Intent(mActivity, WenDaActivity.class); + startActivity(intent); + } else { + ToastUtils.showToast(getContext(), "游客模式下不能进行该操作,请先登陆!"); + } + } + }); + } + + @Override + public void initData() { + super.initData(); + + } + + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/ShopFragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/ShopFragment.java new file mode 100644 index 0000000..cce583d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/main/ShopFragment.java @@ -0,0 +1,269 @@ +package com.fly.guilingl.ui.fragment.main; + + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + + +import com.bumptech.glide.Glide; +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.ui.fragment.shopfragment.FragmentFactory; +import com.fly.guilingl.utils.ParseShopDataUtils; + +import java.util.ArrayList; + +/** + * Created by Fly on 2017/12/12. + */ + +public class ShopFragment extends BaseFragment { + private View mView; + + //private ArrayList imageList ;//图片集合 + // 图片标题集合 + //private final String[] mImageDes = {"图1", "图2", "图3"}; + private ArrayList mShouYeList; + private int mPreviousPos;// 上一个页面位置 + private ViewPager vpPagerTop; + private TextView tvTitleTop; + private LinearLayout llContainerTop; + + private String[] shopingTitles = { + "推荐", + "特产", + "跟团", + "自由行", + "一日行", + "门票", + "多日游", + "玩乐" + }; + private TabLayout tabLayoutShop; + private ViewPager vpShop; + private MyPagerAdapter adapter; + @Override + public View initView() { + mView = View.inflate(getContext(), R.layout.fragment_shopping, null); + initScrollPage(); + initTable(); + return mView; + } + + private void initTable() { + tabLayoutShop = mView.findViewById(R.id.tabLayout_shopping); + vpShop = mView.findViewById(R.id.vp_shopping); + tabLayoutShop.setTabGravity(TabLayout.GRAVITY_FILL); + tabLayoutShop.setTabMode(TabLayout.MODE_SCROLLABLE); + tabLayoutShop.setTabTextColors(Color.BLACK, Color.RED); + adapter = new MyPagerAdapter(getChildFragmentManager()); + vpShop.setAdapter(adapter); + tabLayoutShop.setupWithViewPager(vpShop); + } + + class MyPagerAdapter extends FragmentPagerAdapter { + + public MyPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public CharSequence getPageTitle(int position) { + return shopingTitles[position]; + } + + @Override + public Fragment getItem(int position) { +// Fragment f = new MyFragmentMain(); +// Bundle bundle = new Bundle(); +// bundle.putString("title", title[position]); +// f.setArguments(bundle); + BaseFragment f = FragmentFactory.createFragment(position); + return f; + } + + @Override + public int getCount() { + return shopingTitles.length; + } + } + + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + int currentItem = vpPagerTop.getCurrentItem();// 获取当前页面位置 + currentItem++; + vpPagerTop.setCurrentItem(currentItem);// 跳到下一个页面 + // 继续发送延时2秒的消息, 形成类似递归的效果, 使广告一直循环切换 + mHandler.sendEmptyMessageDelayed(0, 3000); + } + }; + + /** + * 设置轮播图 + */ + private void initScrollPage() { + + getScrollPageDataFromServer(); + vpPagerTop = (ViewPager) mView.findViewById(R.id.vp_pager_top); + tvTitleTop = (TextView) mView.findViewById(R.id.tv_title_top); + llContainerTop = (LinearLayout) mView.findViewById(R.id.ll_container_top); + vpPagerTop.setAdapter(new TopPicAdapter()); + vpPagerTop.setCurrentItem(mShouYeList.size() * 10000); + + // 设置滑动监听 + vpPagerTop.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + + // 某个页面被选中 + @Override + public void onPageSelected(int position) { + int pos = position % mShouYeList.size(); + tvTitleTop.setText(mShouYeList.get(pos).title);// 更新新闻标题 + + // 更新小圆点 + llContainerTop.getChildAt(pos).setEnabled(true);// 将选中的页面的圆点设置为红色 + // 将上一个圆点变成灰色 + llContainerTop.getChildAt(mPreviousPos).setEnabled(false); + + // 更新上一个页面位置 + mPreviousPos = pos; + } + + @Override + public void onPageScrolled(int position, float positionOffset, + int positionOffsetPixels) { + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + // 初始化新闻标题 + tvTitleTop.setText(mShouYeList.get(0).title); + // 动态添加5个小圆点 + for (int i = 0; i < mShouYeList.size(); i++) { + ImageView view = new ImageView(getContext()); + view.setImageResource(R.drawable.shape_point_selector); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT); + + if (i != 0) {// 从第2个圆点开始设置左边距, 保证圆点之间的间距 + params.leftMargin = 6; + view.setEnabled(false);// 设置不可用, 变为灰色圆点 + } + view.setLayoutParams(params); + + llContainerTop.addView(view); + } + mHandler.sendEmptyMessageDelayed(0, 3000); + + vpPagerTop.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mHandler.removeCallbacksAndMessages(null);// 清除所有消息和Runnable对象 + mHandler.removeMessages(0); + break; + case MotionEvent.ACTION_MOVE: + mHandler.removeMessages(0); + case MotionEvent.ACTION_UP: + // 继续轮播广告 + mHandler.sendEmptyMessageDelayed(0, 3000); + break; + } + return false; + } + }); + + } + + private void getScrollPageDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.shopshouye); + mShouYeList = ParseShopDataUtils.getBean(txt); + } + + + class TopPicAdapter extends PagerAdapter { + + // 返回item的个数 + @Override + public int getCount() { + // return mImageIds.length; + return Integer.MAX_VALUE; + } + + // 判断当前要展示的view和返回的object是否是一个对象, 如果是,才展示 + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + // 类似getView方法, 初始化每个item的布局, viewpager默认自动加载前一张和后一张图片, 保证始终保持3张图片, + // 剩余的都需要销毁 + @Override + public Object instantiateItem(ViewGroup container, int position) { + final int pos = position % mShouYeList.size(); + ImageView view = new ImageView(getContext()); + view.setScaleType(ImageView.ScaleType.FIT_XY); + Glide.with(getContext()).load(mShouYeList.get(pos).imageurl).into(view); + //view.setBackgroundResource(imageList.get(pos)); + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ShopBean bean = mShouYeList.get(pos); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + //Intent intent = new Intent(mActivity, DetailActivity.class); + Intent intent = new Intent(mActivity, ShopDetailActivity3.class); + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + // 将item的布局添加给容器 + container.addView(view); + return view;// 返回item的布局对象 + } + + // item销毁的回调方法 + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + // 从容器中移除布局对象 + container.removeView((View) object); + } + + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/FragmentFactory.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/FragmentFactory.java new file mode 100644 index 0000000..c42807e --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/FragmentFactory.java @@ -0,0 +1,52 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + + + +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.ui.fragment.glfragment.CatalogFragment; +import com.fly.guilingl.ui.fragment.glfragment.DiscoveryFragment; + +import java.util.HashMap; + +/** + * 生产fragment工厂 + */ +public class FragmentFactory { + + private static HashMap mFragmentMap = new HashMap(); + + public static BaseFragment createFragment(int pos) { + // 先从集合中取, 如果没有,才创建对象, 提高性能 + BaseFragment fragment = mFragmentMap.get(pos); + if (fragment == null) { + switch (pos) { + case 0: + fragment = new Shop1Fragment(); + break; + case 1: + fragment = new Shop2Fragment(); + break; + case 2: + fragment = new Shop3Fragment(); + break; + case 3: + fragment = new Shop4Fragment(); + break; + case 4: + fragment = new Shop5Fragment(); + break; + case 5: + fragment = new Shop6Fragment(); + break; + case 6: + fragment = new Shop7Fragment(); + break; + case 7: + fragment = new Shop8Fragment(); + break; + } + mFragmentMap.put(pos, fragment);// 将fragment保存在集合中 + } + return fragment; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop1Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop1Fragment.java new file mode 100644 index 0000000..effee87 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop1Fragment.java @@ -0,0 +1,70 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop1Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private Shop3Adapter mAdapter; + private WrapRecyclerView mRv; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.tuijian); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop2Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop2Fragment.java new file mode 100644 index 0000000..0fa9421 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop2Fragment.java @@ -0,0 +1,70 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop2Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private Shop3Adapter mAdapter; + private WrapRecyclerView mRv; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.techan); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop3Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop3Fragment.java new file mode 100644 index 0000000..9a22c65 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop3Fragment.java @@ -0,0 +1,78 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; +import android.widget.LinearLayout; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.CateLogActivity; +import com.fly.guilingl.ui.activity.DetailActivity; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop1Adapter; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop3Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private WrapRecyclerView mRv; + private Shop3Adapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + /** + * 设置RV + */ + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.gentuan); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop4Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop4Fragment.java new file mode 100644 index 0000000..c8a779b --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop4Fragment.java @@ -0,0 +1,73 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop4Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private WrapRecyclerView mRv; + private Shop3Adapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + /** + * 设置RV + */ + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.ziyouxing); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop5Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop5Fragment.java new file mode 100644 index 0000000..8b564a2 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop5Fragment.java @@ -0,0 +1,73 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop5Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private WrapRecyclerView mRv; + private Shop3Adapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + /** + * 设置RV + */ + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.yirixing); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop6Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop6Fragment.java new file mode 100644 index 0000000..5bd5143 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop6Fragment.java @@ -0,0 +1,73 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop6Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private WrapRecyclerView mRv; + private Shop3Adapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + /** + * 设置RV + */ + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.menpiao); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop7Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop7Fragment.java new file mode 100644 index 0000000..d58eb6d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop7Fragment.java @@ -0,0 +1,73 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop7Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private WrapRecyclerView mRv; + private Shop3Adapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + /** + * 设置RV + */ + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.duoriyou); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop8Fragment.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop8Fragment.java new file mode 100644 index 0000000..4af1822 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/ui/fragment/shopfragment/Shop8Fragment.java @@ -0,0 +1,73 @@ +package com.fly.guilingl.ui.fragment.shopfragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.constant.Data; +import com.fly.guilingl.ui.activity.ShopDetailActivity3; +import com.fly.guilingl.ui.fragment.adapter.Shop3Adapter; +import com.fly.guilingl.ui.fragment.base.BaseFragment; +import com.fly.guilingl.utils.ParseShopDataUtils; +import com.fly.guilingl.view.WrapRecyclerView; + +import java.util.ArrayList; + +/** + * Created by Fly on 2019/1/9/009. + */ + +public class Shop8Fragment extends BaseFragment{ + private View mView; + private ArrayList mList; + private WrapRecyclerView mRv; + private Shop3Adapter mAdapter; + @Override + public View initView() { + mView = View.inflate(mActivity, R.layout.fragment_shop1, null); + getDataFromServer(); + initRV(); + return mView; + } + + /** + * 设置RV + */ + private void initRV() { + mRv = (WrapRecyclerView) mView.findViewById(R.id.wrv); + mAdapter = new Shop3Adapter(mList); + mRv.setLayoutManager(new LinearLayoutManager(mActivity));//默认listView垂直效果 + mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + mRv.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new Shop3Adapter.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + ShopBean bean = mList.get(position); + Bundle bundle = new Bundle(); + bundle.putString("title", bean.title); + bundle.putString("leibie",bean.leibie); + bundle.putString("url",bean.url); + bundle.putString("uniquekey",bean.uniquekey); + + bundle.putString("price",bean.price); + bundle.putString("imageurl",bean.imageurl); + bundle.putString("name",bean.name); + + Intent intent = new Intent(getContext(), ShopDetailActivity3.class); + //Intent intent = new Intent(getContext(), DetailActivity.class); + + intent.putExtra("bundle", bundle); + startActivity(intent); + } + }); + } + + private void getDataFromServer() { + String txt = Data.readFromRaw(mActivity,R.raw.wanle); + mList = ParseShopDataUtils.getBean(txt); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/MD5Utils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/MD5Utils.java new file mode 100644 index 0000000..a447257 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/MD5Utils.java @@ -0,0 +1,73 @@ +package com.fly.guilingl.utils; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * 字符串MD5算法加密 + */ +public class MD5Utils { + + public static String encode(String password) { + + try { + MessageDigest digest = MessageDigest.getInstance("MD5"); + byte[] bytes = digest.digest(password.getBytes());// 进行加密运算,返回加密后的字节数组 + + StringBuffer sb = new StringBuffer(); + for (byte b : bytes) { + int i = b & 0xff; + String hexString = Integer.toHexString(i); + if (hexString.length() == 1) { + hexString = "0" + hexString; + } + sb.append(hexString); + } + String MD5 = sb.toString(); + return MD5; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + return null; + } + + /** + * 计算文件md5的值 + */ + public static String encodeFile(String filePath) { + try { + MessageDigest digest = MessageDigest.getInstance("MD5"); + + FileInputStream in = new FileInputStream(filePath); + byte[] buffer = new byte[1024]; + int len = 0; + while ((len = in.read(buffer)) != -1) { + digest.update(buffer, 0, len); + } + + byte[] bytes = digest.digest(); + + StringBuffer sb = new StringBuffer(); + for (byte b : bytes) { + int i = b & 0xff; + String hexString = Integer.toHexString(i); + if (hexString.length() == 1) { + hexString = "0" + hexString; + } + + sb.append(hexString); + } + + String md5 = sb.toString(); + + return md5; + } catch (Exception e) { + // 没有此算法异常 + e.printStackTrace(); + } + + return null; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseCatelogDataUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseCatelogDataUtils.java new file mode 100644 index 0000000..2f29d7e --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseCatelogDataUtils.java @@ -0,0 +1,49 @@ +package com.fly.guilingl.utils; + + +import android.util.Log; + +import com.fly.guilingl.bean.GrideData; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2019/1/5/005. + */ + +public class ParseCatelogDataUtils { + public static ArrayList getBean(String data) { + try { + JSONObject jo = new JSONObject(data); + JSONArray ja = jo.getJSONObject("result").getJSONArray("data"); + ArrayList list = new ArrayList(); + for (int i = 0; i < ja.length(); i++) { + JSONObject jo1 = ja.getJSONObject(i); + String title = jo1.getString("title"); + int type = Integer.parseInt(jo1.getString("type")); + String url = jo1.getString("url"); + String uniquekey = jo1.getString("uniquekey"); + if (StringUtils.isEmpty(url)){ + url = "fly"; + } + if (StringUtils.isEmpty(uniquekey)){ + uniquekey = "fly"; + } + + GrideData grideData = new GrideData(type,title,url,uniquekey); + list.add(grideData); + //Log.e("--GrideData--", list.get(i).viewType+""); + //Log.e("--GrideData--", list.get(i).data); + //Log.e("--GrideData--", list.get(i).url); + //Log.e("--GrideData--", list.get(i).uniquekey); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseHistoryDataUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseHistoryDataUtils.java new file mode 100644 index 0000000..7fd9707 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseHistoryDataUtils.java @@ -0,0 +1,48 @@ +package com.fly.guilingl.utils; + + +import com.fly.guilingl.bean.History; +import com.fly.guilingl.bean.YouJiBean; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2019/1/5/005. + */ + +public class ParseHistoryDataUtils { + public static ArrayList getBean(String data) { + try { + JSONObject jo = new JSONObject(data); + JSONArray ja = jo.getJSONObject("result").getJSONArray("data"); + ArrayList list = new ArrayList(); + for (int i = 0; i < ja.length(); i++) { + JSONObject jo1 = ja.getJSONObject(i); + String account = jo1.getString("account"); + String title = jo1.getString("title"); + String url = jo1.getString("url"); + String leibie = jo1.getString("leibie"); + String uniquekey = jo1.getString("uniquekey"); + String imageurl = jo1.getString("imageurl"); + String time = jo1.getString("time"); + History bean = new History(); + + bean.account = account; + bean.title = title; + bean.url = url; + bean.leibie = leibie; + bean.uniquekey = uniquekey; + bean.imageUrl = imageurl; + bean.time = time; + list.add(bean); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseNewsDataUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseNewsDataUtils.java new file mode 100644 index 0000000..be3ad80 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseNewsDataUtils.java @@ -0,0 +1,65 @@ +package com.fly.guilingl.utils; + + +import android.util.Log; + +import com.fly.guilingl.bean.NewsData; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; + +/** + * Created by Fly on 2017/12/13. + */ + +public class ParseNewsDataUtils { + + public static ArrayList getBean(String data) { + try { + JSONObject jo = new JSONObject(data); + JSONArray ja = jo.getJSONObject("result").getJSONArray("data"); + String strReason = jo.getString("reason"); + Log.e("reason:",strReason); + ArrayList list = new ArrayList(); + for (int i = 0; i < ja.length(); i++) { + JSONObject jo1 = ja.getJSONObject(i); + NewsData newsData02 = new NewsData(); + newsData02.title = jo1.getString("title"); + newsData02.date = jo1.getString("date"); + newsData02.author_name = jo1.getString("author_name"); + newsData02.url = jo1.getString("url"); + newsData02.uniquekey = jo1.getString("uniquekey"); + + newsData02.thumbnail_pic_s = jo1.getString("thumbnail_pic_s"); + boolean b2 = jo1.has("thumbnail_pic_s02"); + + Log.e("thumbnail_pic_s:",jo1.getString("thumbnail_pic_s")); + if (b2 == true) { + String imageUrl2 = jo1.getString("thumbnail_pic_s02"); + newsData02.thumbnail_pic_s02 = imageUrl2; + } else { + newsData02.thumbnail_pic_s02 = "0"; + } + + boolean b3 = jo1.has("thumbnail_pic_s03"); + if (b3 == true) { + String imageUrl3 = jo1.getString("thumbnail_pic_s03"); + newsData02.thumbnail_pic_s03 = imageUrl3; + } else { + newsData02.thumbnail_pic_s03 = "0"; + } + + list.add(newsData02); +// Log.e("--thumbnail_pic_s--", list.get(i).thumbnail_pic_s); +// Log.e("--thumbnail_pic_s02--", list.get(i).thumbnail_pic_s02); +// Log.e("--thumbnail_pic_s03--", list.get(i).thumbnail_pic_s03); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseShopDataUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseShopDataUtils.java new file mode 100644 index 0000000..af0934d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseShopDataUtils.java @@ -0,0 +1,49 @@ +package com.fly.guilingl.utils; + + +import com.fly.guilingl.bean.ShopBean; +import com.fly.guilingl.bean.YouJiBean; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2019/1/5/005. + */ + +public class ParseShopDataUtils { + public static ArrayList getBean(String data) { + try { + JSONObject jo = new JSONObject(data); + JSONArray ja = jo.getJSONObject("result").getJSONArray("data"); + ArrayList list = new ArrayList(); + for (int i = 0; i < ja.length(); i++) { + JSONObject jo1 = ja.getJSONObject(i); + String title = jo1.getString("title"); + String url = jo1.getString("url"); + String imageUrl = jo1.getString("imageurl"); + String uniquekey = jo1.getString("uniquekey"); + String leibie = jo1.getString("leibie"); + String name = jo1.getString("name"); + String place = jo1.getString("place"); + String price = jo1.getString("price"); + ShopBean bean = new ShopBean(); + bean.title = title; + bean.url = url; + bean.uniquekey = uniquekey; + bean.imageurl = imageUrl; + bean.leibie = leibie; + bean.name = name; + bean.place = place; + bean.price = price; + list.add(bean); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseWeatherDataUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseWeatherDataUtils.java new file mode 100644 index 0000000..0a129c6 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseWeatherDataUtils.java @@ -0,0 +1,270 @@ +package com.fly.guilingl.utils; + + +import android.graphics.drawable.BitmapDrawable; +import android.util.Log; +import android.view.View; + +import com.fly.guilingl.R; +import com.fly.guilingl.bean.History; +import com.fly.guilingl.bean.WeatherBean; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; + +/** + * Created by Administrator on 2019/1/5/005. + */ + +public class ParseWeatherDataUtils { + public static WeatherBean getBean(String data) { + try { + JSONObject jsonObject = new JSONObject(data); + JSONObject current = jsonObject.getJSONObject("current"); + String pubTime = current.getString("pubTime"); + + String temperature = current.getJSONObject("temperature").getString("value") + "℃"; + String str_weather = getWeatherInfo(current.getInt("weather")); + String feelsLike = current.getJSONObject("feelsLike").getString("value") + "℃"; + String humidity = current.getJSONObject("humidity").getString("value") + "%"; + String pressure = current.getJSONObject("pressure").getString("value") + " mb"; + + WeatherBean bean = new WeatherBean(); + bean.current_pubTime = pubTime; + bean.current_temperature = temperature; + bean.current_weather = str_weather; + bean.current_feelsLike = feelsLike; + bean.current_humidity = humidity; + bean.current_pressure = pressure; + + return bean; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static ArrayList getListBean(String data) { + + try { + ArrayList list = new ArrayList<>(); + + JSONObject jsonObject = new JSONObject(data); + + JSONObject forecastDaily = jsonObject.getJSONObject("forecastDaily"); + + JSONObject weather = forecastDaily.getJSONObject("weather"); + JSONArray weather_value = weather.getJSONArray("value"); + + JSONObject temperature = forecastDaily.getJSONObject("temperature"); + JSONArray temperature_value = temperature.getJSONArray("value"); + + JSONObject precipitationProbability = forecastDaily.getJSONObject("precipitationProbability"); + JSONArray precipitationProbability_value = precipitationProbability.getJSONArray("value"); + + + JSONObject sunRiseSet = forecastDaily.getJSONObject("sunRiseSet"); + JSONArray sunRiseSet_value = sunRiseSet.getJSONArray("value"); + + + Log.e("temperature_value---", temperature_value.length() + ""); + Log.e("weather_value---", weather_value.length() + ""); + for (int i = 0; i < weather_value.length(); i++) { + WeatherBean bean = new WeatherBean(); + + //天气状况 + JSONObject jo_weather = weather_value.getJSONObject(i); + int weather_from = jo_weather.getInt("from"); + int weather_to = jo_weather.getInt("to"); + String str_w_from = getWeatherInfo(weather_from); + String str_w_to = getWeatherInfo(weather_to); + + //温度 + JSONObject jo_temperature = temperature_value.getJSONObject(i); + String temperature_from = jo_temperature.getString("from") + "℃"; + String temperature_to = jo_temperature.getString("to") + "℃"; + + Log.e("temperature_from---", temperature_from + ""); + + //降雨概率 + String str_pre = "%"; + if (i < 5) { + str_pre = precipitationProbability_value.getString(i) + "%"; + } + + + //日落日出 + JSONObject jo_sunRiseSet = sunRiseSet_value.getJSONObject(i); + String sunRiseSet_to = jo_sunRiseSet.getString("from").substring(11, 19); + String sunRiseSet_from = jo_sunRiseSet.getString("to").substring(11, 19); + //日期 + String time = getTime(i); + //星期 + String weekday = getWeekDay(getTime(i)); + + bean.weekDay = weekday; + bean.time = time; + bean.weather_from = str_w_from; + bean.weather_to = str_w_to; + bean.temperature_from = temperature_from; + bean.temperature_to = temperature_to; + bean.str_pre = str_pre; + bean.sunRiseSet_from = sunRiseSet_from; + bean.sunRiseSet_to = sunRiseSet_to; + + list.add(bean); + } + return list; + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private static String getWeekDay(String datetime) { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); + String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; + Calendar cal = Calendar.getInstance(); // 获得一个日历 + Date datet = null; + try { + datet = f.parse(datetime); + cal.setTime(datet); + } catch (ParseException e) { + e.printStackTrace(); + } + int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。 + if (w < 0) + w = 0; + return weekDays[w]; + } + + private static String getTime(int amount) throws ParseException { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String today = df.format(new Date());//获取当前时间 + Date d = df.parse(today); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(d); + calendar.add(Calendar.DATE, amount); +// calendar.add(Calendar.DATE, 1); +// System.out.println("明天:" + sj.format(calendar.getTime())); +// //此时日期变为2015-12-01 ,所以下面的-2, +// //理论上讲应该是2015-11-29 +// calendar.add(calendar.DATE, -2); +// System.out.println("前天:" + sj.format(calendar.getTime())); + return df.format(calendar.getTime()) + ""; + } + + private static String getWeatherInfo(int code) { + + switch (code) { + case 0: + return "晴"; + case 1: + return "多云"; + case 2: + return "阴"; + case 3: + return "阵雨"; + case 4: + return "雷阵雨"; + case 5: + return "雷阵雨并伴有冰雹"; + case 6: + return "雨夹雪"; + case 7: + return "小雨"; + case 8: + return "中雨"; + case 9: + return "大雨"; + case 10: + return "暴雨"; + case 11: + return "大暴雨"; + case 12: + return "特大暴雨"; + case 13: + return "阵雪"; + case 14: + return "小雪"; + case 15: + return "中雪"; + case 16: + return "大雪"; + case 17: + return "暴雪"; + case 18: + return "雾"; + case 19: + return "冻雨"; + case 20: + return "沙尘暴"; + case 21: + return "小雨-中雨"; + case 22: + return "中雨-大雨"; + case 23: + return "大雨-暴雨"; + case 24: + return "暴雨-大暴雨"; + case 25: + return "大暴雨-特大暴雨"; + case 26: + return "小雪-中雪"; + case 27: + return "中雪-大雪"; + case 28: + return "大雪-暴雪"; + case 29: + return "浮沉"; + case 30: + return "扬沙"; + case 31: + return "强沙尘暴"; + case 32: + return "飑"; + case 33: + return "龙卷风"; + case 34: + return "若高吹雪"; + case 35: + return "轻雾"; + case 53: + return "霾"; + case 99: + return "未知"; + } + return null; + } + + public static void setWeatherBackGround(View view, String weather) { + switch (weather) { + case "小雨": + view.setBackgroundResource(R.mipmap.ic_weather_xiaoyu); + break; + case "中雨": + view.setBackgroundResource(R.mipmap.ic_weather_xiaoyu); + break; + case "大雨": + view.setBackgroundResource(R.mipmap.ic_weather_xiaoyu); + break; + case "阴": + view.setBackgroundResource(R.mipmap.ic_weather_yin); + break; + case "晴": + view.setBackgroundResource(R.mipmap.ic_weather_qing); + break; + case "多云": + view.setBackgroundResource(R.mipmap.ic_weather_duoyun); + break; + + } + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseYouJiDataUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseYouJiDataUtils.java new file mode 100644 index 0000000..45bc01f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ParseYouJiDataUtils.java @@ -0,0 +1,112 @@ +package com.fly.guilingl.utils; + + +import android.util.Log; + +import com.fly.guilingl.bean.GrideData; +import com.fly.guilingl.bean.YouJiBean; +import com.fly.guilingl.bean.WenDaBean; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2019/1/5/005. + */ + +public class ParseYouJiDataUtils { + public static ArrayList getBean(String data) { + try { + JSONObject jo = new JSONObject(data); + JSONArray ja = jo.getJSONObject("result").getJSONArray("data"); + ArrayList list = new ArrayList(); + for (int i = 0; i < ja.length(); i++) { + JSONObject jo1 = ja.getJSONObject(i); + String title = jo1.getString("title"); + String url = jo1.getString("url"); + String imageUrl = jo1.getString("imageurl"); + String uniquekey = jo1.getString("uniquekey"); + String time = jo1.getString("time"); + String author = jo1.getString("author"); + + YouJiBean bean = new YouJiBean(); + + boolean b2 = jo1.has("leibie"); + if (b2 == true) { + String leibie = jo1.getString("leibie"); + bean.leibie = leibie; + } else { + bean.leibie = "暂无分类"; + } + + boolean b3 = jo1.has("leibie2"); + if (b3 == true) { + String leibie2 = jo1.getString("leibie2"); + bean.leibie2 = leibie2; + } else { + bean.leibie2 = "暂无小分类"; + } + bean.title = title; + bean.url = url; + bean.uniquekey = uniquekey; + bean.imageUrl = imageUrl; + bean.time = time; + bean.author = author; + //Log.e("--YouJiBean---",title); + list.add(bean); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + public static ArrayList getwdBean(String data) { + try { + JSONObject jo = new JSONObject(data); + JSONArray ja = jo.getJSONObject("result").getJSONArray("data"); + ArrayList list = new ArrayList(); + for (int i = 0; i < ja.length(); i++) { + JSONObject jo1 = ja.getJSONObject(i); + String title = jo1.getString("title"); + String url = jo1.getString("url"); + String imageUrl = jo1.getString("imageurl"); + String uniquekey = jo1.getString("uniquekey"); + String time = jo1.getString("time"); + String author = jo1.getString("author"); + + WenDaBean bean = new WenDaBean(); + + boolean b2 = jo1.has("leibie"); + if (b2 == true) { + String leibie = jo1.getString("leibie"); + bean.leibie = leibie; + } else { + bean.leibie = "暂无分类"; + } + + boolean b3 = jo1.has("leibie2"); + if (b3 == true) { + String leibie2 = jo1.getString("leibie2"); + bean.leibie2 = leibie2; + } else { + bean.leibie2 = "暂无小分类"; + } + bean.title = title; + bean.url = url; + bean.uniquekey = uniquekey; + bean.imageUrl = imageUrl; + bean.time = time; + bean.author = author; + //Log.e("--YouJiBean---",title); + list.add(bean); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/PrefUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/PrefUtils.java new file mode 100644 index 0000000..d8a0e7c --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/PrefUtils.java @@ -0,0 +1,88 @@ +package com.fly.guilingl.utils; + +import android.content.Context; +import android.content.SharedPreferences; + +/** + * 对SharePreferences进行封装 + * + * @author Fly + * + */ +public class PrefUtils { + + /** + * boolean值存储 + */ + public static void putBoolean(String key, boolean value, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_PRIVATE); + sp.edit().putBoolean(key, value).commit(); + } + + /** + * boolean值获取 + */ + public static boolean getBoolean(String key, boolean defValue, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_PRIVATE); + return sp.getBoolean(key, defValue); + } + + /** + * String值存储 + */ +// public static void putString(String key, String value, Context ctx) { +// SharedPreferences sp = ctx.getSharedPreferences("config", +// Context.MODE_PRIVATE); +// sp.edit().putString(key, value).commit(); +// } + + public static void putString(String key, String value, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_MULTI_PROCESS); + sp.edit().putString(key, value).commit(); + } + + /** + * String值获取 + */ +// public static String getString(String key, String defValue, Context ctx) { +// SharedPreferences sp = ctx.getSharedPreferences("config", +// Context.MODE_PRIVATE); +// return sp.getString(key, defValue); +// } + + public static String getString(String key, String defValue, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_MULTI_PROCESS); + return sp.getString(key, defValue); + } + + /** + * int值存储 + */ + public static void putInt(String key, int value, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_PRIVATE); + sp.edit().putInt(key, value).commit(); + } + + /** + * int值获取 + */ + public static int getInt(String key, int defValue, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_PRIVATE); + return sp.getInt(key, defValue); + } + + /** + * 删除存储 + */ + public static void remove(String key, Context ctx) { + SharedPreferences sp = ctx.getSharedPreferences("config", + Context.MODE_PRIVATE); + sp.edit().remove(key).commit(); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/StatusBarUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/StatusBarUtils.java new file mode 100644 index 0000000..fc185a7 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/StatusBarUtils.java @@ -0,0 +1,199 @@ +package com.fly.guilingl.utils; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.graphics.Color; +import android.os.Build; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/** + * Created by Fly on 2017/12/15. + */ + +public class StatusBarUtils { + + /** + * 修改状态栏为全透明 + * + * @param activity + */ + @TargetApi(19) + public static void transparencyBar(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(Color.TRANSPARENT); + + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + Window window = activity.getWindow(); + window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, + WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + + /** + * 修改状态栏颜色,支持4.4以上版本 + * + * @param activity + * @param colorId + */ + public static void setStatusBarColor(Activity activity, int colorId) { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); +// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(activity.getResources().getColor(colorId)); + } +// } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { +// //使用SystemBarTint库使4.4版本状态栏变色,需要先将状态栏设置为透明 +// transparencyBar(activity); +// SystemBarTintManager tintManager = new SystemBarTintManager(activity); +// tintManager.setStatusBarTintEnabled(true); +// tintManager.setStatusBarTintResource(colorId); +// } + } + + /** + * 状态栏亮色模式,设置状态栏黑色文字、图标, + * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android + * + * @param activity + * @return 1:MIUUI 2:Flyme 3:android6.0 + */ + public static int StatusBarLightMode(Activity activity) { + int result = 0; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (MIUISetStatusBarLightMode(activity, true)) { + result = 1; + } else if (FlymeSetStatusBarLightMode(activity.getWindow(), true)) { + result = 2; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + activity.getWindow().getDecorView().setSystemUiVisibility + (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + result = 3; + } + } + return result; + } + + /** + * 已知系统类型时,设置状态栏黑色文字、图标。 + * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android + * + * @param activity + * @param type 1:MIUUI 2:Flyme 3:android6.0 + */ + public static void StatusBarLightMode(Activity activity, int type) { + if (type == 1) { + MIUISetStatusBarLightMode(activity, true); + } else if (type == 2) { + FlymeSetStatusBarLightMode(activity.getWindow(), true); + } else if (type == 3) { + activity.getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } + + } + + /** + * 状态栏暗色模式,清除MIUI、flyme或6.0以上版本状态栏黑色文字、图标 + */ + public static void StatusBarDarkMode(Activity activity, int type) { + if (type == 1) { + MIUISetStatusBarLightMode(activity, false); + } else if (type == 2) { + FlymeSetStatusBarLightMode(activity.getWindow(), false); + } else if (type == 3) { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); + } + + } + + + /** + * 设置状态栏图标为深色和魅族特定的文字风格 + * 可以用来判断是否为Flyme用户 + * + * @param window 需要设置的窗口 + * @param dark 是否把状态栏文字及图标颜色设置为深色 + * @return boolean 成功执行返回true + */ + public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) { + boolean result = false; + if (window != null) { + try { + WindowManager.LayoutParams lp = window.getAttributes(); + Field darkFlag = WindowManager.LayoutParams.class + .getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); + Field meizuFlags = WindowManager.LayoutParams.class + .getDeclaredField("meizuFlags"); + darkFlag.setAccessible(true); + meizuFlags.setAccessible(true); + int bit = darkFlag.getInt(null); + int value = meizuFlags.getInt(lp); + if (dark) { + value |= bit; + } else { + value &= ~bit; + } + meizuFlags.setInt(lp, value); + window.setAttributes(lp); + result = true; + } catch (Exception e) { + + } + } + return result; + } + /** + * 需要MIUIV6以上 + * + * @param activity + * @param dark 是否把状态栏文字及图标颜色设置为深色 + * @return boolean 成功执行返回true + */ + public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) { + boolean result = false; + Window window = activity.getWindow(); + if (window != null) { + Class clazz = window.getClass(); + try { + int darkModeFlag = 0; + Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); + Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); + darkModeFlag = field.getInt(layoutParams); + Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); + if (dark) { + extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体 + } else { + extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体 + } + result = true; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + //开发版 7.7.13 及以后版本采用了系统API,旧方法无效但不会报错,所以两个方式都要加上 + if (dark) { + activity.getWindow().getDecorView().setSystemUiVisibility + (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + activity.getWindow().getDecorView() + .setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); + } + } + } catch (Exception e) { + + } + } + return result; + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/StringUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/StringUtils.java new file mode 100644 index 0000000..376b278 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/StringUtils.java @@ -0,0 +1,30 @@ +package com.fly.guilingl.utils; + + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class StringUtils { + /** 判断字符串是否有值,如果为null或者是空字符串或者只有空格或者为"null"字符串,则返回true,否则则返回false */ + public static boolean isEmpty(String value) { + if (value != null && !"".equalsIgnoreCase(value.trim()) + && !"null".equalsIgnoreCase(value.trim())) { + return false; + } else { + return true; + } + } + + public static String replaceBlank(String str) { + String dest = ""; + if (str!=null) { + Pattern p = Pattern.compile("\\s*|\t|\r|\n"); + Matcher m = p.matcher(str); + dest = m.replaceAll(""); + } + return dest; + } +// public static void main(String[] args) { +// System.out.println(StringUtils.replaceBlank("just do it!")); +// } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ToastUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ToastUtils.java new file mode 100644 index 0000000..9a098bb --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/ToastUtils.java @@ -0,0 +1,28 @@ +package com.fly.guilingl.utils; + +import android.content.Context; +import android.view.Gravity; +import android.widget.Toast; + +/** + * Created by Fly on 2017/12/12. + */ + +public class ToastUtils extends Toast { + public ToastUtils(Context context) { + super(context); + } + + private static Toast toast; + + public static void showToast(Context context, String content) { + if (toast == null) { + toast = Toast.makeText(context, content, Toast.LENGTH_SHORT); + } else { + toast.setText(content); + } + toast.setGravity(Gravity.CENTER, 0, 0); + toast.show(); + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/UIUtils.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/UIUtils.java new file mode 100644 index 0000000..164bf03 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/utils/UIUtils.java @@ -0,0 +1,97 @@ +package com.fly.guilingl.utils; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.drawable.Drawable; +import android.os.Handler; +import android.view.View; + +import com.fly.guilingl.gloabal.MyApplication; + + +public class UIUtils { + + public static Context getContext() { + return MyApplication.getContext(); + } + + public static Handler getHandler() { + return MyApplication.getHandler(); + } + + public static int getMainThreadId() { + return MyApplication.getMainThreadId(); + } + + // /////////////////加载资源文件 /////////////////////////// + + // 获取字符串 + public static String getString(int id) { + return getContext().getResources().getString(id); + } + + // 获取字符串数组 + public static String[] getStringArray(int id) { + return getContext().getResources().getStringArray(id); + } + + // 获取图片 + public static Drawable getDrawable(int id) { + return getContext().getResources().getDrawable(id); + } + + // 获取颜色 + public static int getColor(int id) { + return getContext().getResources().getColor(id); + } + + //根据id获取颜色的状态选择器 + public static ColorStateList getColorStateList(int id) { + return getContext().getResources().getColorStateList(id); + } + + // 获取尺寸 + public static int getDimen(int id) { + return getContext().getResources().getDimensionPixelSize(id);// 返回具体像素值 + } + + // /////////////////dip和px转换////////////////////////// + + public static int dip2px(float dip) { + float density = getContext().getResources().getDisplayMetrics().density; + return (int) (dip * density + 0.5f); + } + + public static float px2dip(int px) { + float density = getContext().getResources().getDisplayMetrics().density; + return px / density; + } + + // /////////////////加载布局文件////////////////////////// + public static View inflate(int id) { + return View.inflate(getContext(), id, null); + } + + // /////////////////判断是否运行在主线程////////////////////////// + public static boolean isRunOnUIThread() { + // 获取当前线程id, 如果当前线程id和主线程id相同, 那么当前就是主线程 + int myTid = android.os.Process.myTid(); + if (myTid == getMainThreadId()) { + return true; + } + + return false; + } + + // 运行在主线程 + public static void runOnUIThread(Runnable r) { + if (isRunOnUIThread()) { + // 已经是主线程, 直接运行 + r.run(); + } else { + // 如果是子线程, 借助handler让其运行在主线程 + getHandler().post(r); + } + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/view/AmountView.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/AmountView.java new file mode 100644 index 0000000..5964cb8 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/AmountView.java @@ -0,0 +1,131 @@ +package com.fly.guilingl.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; + +import com.fly.guilingl.R; + +/** + * Created by Fly on 2019/1/13/013. + * 自定义组件:购买数量,带减少增加按钮 + */ + +public class AmountView extends LinearLayout implements View.OnClickListener, TextWatcher { + + private static final String TAG = "AmountView"; + private int amount = 1; //购买数量 + private int goods_storage = 1; //商品库存 + + private OnAmountChangeListener mListener; + + private EditText etAmount; + private Button btnDecrease; + private Button btnIncrease; + + public AmountView(Context context) { + this(context, null); + } + + public AmountView(Context context, AttributeSet attrs) { + super(context, attrs); + + LayoutInflater.from(context).inflate(R.layout.view_amount, this); + etAmount = (EditText) findViewById(R.id.etAmount); + btnDecrease = (Button) findViewById(R.id.btnDecrease); + btnIncrease = (Button) findViewById(R.id.btnIncrease); + btnDecrease.setOnClickListener(this); + btnIncrease.setOnClickListener(this); + etAmount.addTextChangedListener(this); + + TypedArray obtainStyledAttributes = getContext().obtainStyledAttributes(attrs, R.styleable.AmountView); + int btnWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_btnWidth, LayoutParams.WRAP_CONTENT); + int tvWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_tvWidth, 80); + int tvTextSize = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_tvTextSize, 0); + int btnTextSize = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_btnTextSize, 0); + obtainStyledAttributes.recycle(); + + LayoutParams btnParams = new LayoutParams(btnWidth, LayoutParams.MATCH_PARENT); + btnDecrease.setLayoutParams(btnParams); + btnIncrease.setLayoutParams(btnParams); + if (btnTextSize != 0) { + btnDecrease.setTextSize(TypedValue.COMPLEX_UNIT_PX, btnTextSize); + btnIncrease.setTextSize(TypedValue.COMPLEX_UNIT_PX, btnTextSize); + } + + LayoutParams textParams = new LayoutParams(tvWidth, LayoutParams.MATCH_PARENT); + etAmount.setLayoutParams(textParams); + if (tvTextSize != 0) { + etAmount.setTextSize(tvTextSize); + } + } + + public void setOnAmountChangeListener(OnAmountChangeListener onAmountChangeListener) { + this.mListener = onAmountChangeListener; + } + + public void setGoods_storage(int goods_storage) { + this.goods_storage = goods_storage; + } + + @Override + public void onClick(View v) { + int i = v.getId(); + if (i == R.id.btnDecrease) { + if (amount > 1) { + amount--; + etAmount.setText(amount + ""); + } + } else if (i == R.id.btnIncrease) { + if (amount < goods_storage) { + amount++; + etAmount.setText(amount + ""); + } + } + + etAmount.clearFocus(); + + if (mListener != null) { + mListener.onAmountChange(this, amount); + } + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + if (s.toString().isEmpty()) + return; + amount = Integer.valueOf(s.toString()); + if (amount > goods_storage) { + etAmount.setText(goods_storage + ""); + return; + } + + if (mListener != null) { + mListener.onAmountChange(this, amount); + } + } + + + public interface OnAmountChangeListener { + void onAmountChange(View view, int amount); + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/view/ImageViewPlus.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/ImageViewPlus.java new file mode 100644 index 0000000..0062f7d --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/ImageViewPlus.java @@ -0,0 +1,140 @@ +package com.fly.guilingl.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Shader; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.widget.ImageView; + +import com.fly.guilingl.R; + + +/** + * Created by Fly on 2017/11/26. + */ + +public class ImageViewPlus extends ImageView { + /** + * android.widget.ImageView + */ + public static final int TYPE_NONE = 0; + /** + * 圆形 + */ + public static final int TYPE_CIRCLE = 1; + /** + * 圆角矩形 + */ + public static final int TYPE_ROUNDED_RECT = 2; + + private static final int DEFAULT_TYPE = TYPE_NONE; + private static final int DEFAULT_BORDER_COLOR = Color.TRANSPARENT; + private static final int DEFAULT_BORDER_WIDTH = 0; + private static final int DEFAULT_RECT_ROUND_RADIUS = 0; + + private int mType; + private int mBorderColor; + private int mBorderWidth; + private int mRectRoundRadius; + + private Paint mPaintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint mPaintBorder = new Paint(Paint.ANTI_ALIAS_FLAG); + + private RectF mRectBorder = new RectF(); + private RectF mRectBitmap = new RectF(); + + private Bitmap mRawBitmap; + private BitmapShader mShader; + private Matrix mMatrix = new Matrix(); + + public ImageViewPlus(Context context, AttributeSet attrs) { + super(context, attrs); + //取xml文件中设定的参数 + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ImageViewPlus); + mType = ta.getInt(R.styleable.ImageViewPlus_type, DEFAULT_TYPE); + mBorderColor = ta.getColor(R.styleable.ImageViewPlus_borderColor, DEFAULT_BORDER_COLOR); + mBorderWidth = ta.getDimensionPixelSize(R.styleable.ImageViewPlus_borderWidth, dip2px(DEFAULT_BORDER_WIDTH)); + mRectRoundRadius = ta.getDimensionPixelSize(R.styleable.ImageViewPlus_rectRoundRadius, dip2px(DEFAULT_RECT_ROUND_RADIUS)); + ta.recycle(); + } + + @Override + protected void onDraw(Canvas canvas) { + Bitmap rawBitmap = getBitmap(getDrawable()); + + if (rawBitmap != null && mType != TYPE_NONE){ + int viewWidth = getWidth(); + int viewHeight = getHeight(); + int viewMinSize = Math.min(viewWidth, viewHeight); + float dstWidth = mType == TYPE_CIRCLE ? viewMinSize : viewWidth; + float dstHeight = mType == TYPE_CIRCLE ? viewMinSize : viewHeight; + float halfBorderWidth = mBorderWidth / 2.0f; + float doubleBorderWidth = mBorderWidth * 2; + + if (mShader == null || !rawBitmap.equals(mRawBitmap)){ + mRawBitmap = rawBitmap; + mShader = new BitmapShader(mRawBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + } + if (mShader != null){ + mMatrix.setScale((dstWidth - doubleBorderWidth) / rawBitmap.getWidth(), (dstHeight - doubleBorderWidth) / rawBitmap.getHeight()); + mShader.setLocalMatrix(mMatrix); + } + + mPaintBitmap.setShader(mShader); + mPaintBorder.setStyle(Paint.Style.STROKE); + mPaintBorder.setStrokeWidth(mBorderWidth); + mPaintBorder.setColor(mBorderWidth > 0 ? mBorderColor : Color.TRANSPARENT); + + if (mType == TYPE_CIRCLE){ + float radius = viewMinSize / 2.0f; + canvas.drawCircle(radius, radius, radius - halfBorderWidth, mPaintBorder); + canvas.translate(mBorderWidth, mBorderWidth); + canvas.drawCircle(radius - mBorderWidth, radius - mBorderWidth, radius - mBorderWidth, mPaintBitmap); + } else if (mType == TYPE_ROUNDED_RECT){ + mRectBorder.set(halfBorderWidth, halfBorderWidth, dstWidth - halfBorderWidth, dstHeight - halfBorderWidth); + mRectBitmap.set(0.0f, 0.0f, dstWidth - doubleBorderWidth, dstHeight - doubleBorderWidth); + float borderRadius = mRectRoundRadius - halfBorderWidth > 0.0f ? mRectRoundRadius - halfBorderWidth : 0.0f; + float bitmapRadius = mRectRoundRadius - mBorderWidth > 0.0f ? mRectRoundRadius - mBorderWidth : 0.0f; + canvas.drawRoundRect(mRectBorder, borderRadius, borderRadius, mPaintBorder); + canvas.translate(mBorderWidth, mBorderWidth); + canvas.drawRoundRect(mRectBitmap, bitmapRadius, bitmapRadius, mPaintBitmap); + } + } else { + super.onDraw(canvas); + } + } + + private int dip2px(int dipVal) + { + float scale = getResources().getDisplayMetrics().density; + return (int)(dipVal * scale + 0.5f); + } + + private Bitmap getBitmap(Drawable drawable){ + if (drawable instanceof BitmapDrawable){ + return ((BitmapDrawable)drawable).getBitmap(); + } else if (drawable instanceof ColorDrawable){ + Rect rect = drawable.getBounds(); + int width = rect.right - rect.left; + int height = rect.bottom - rect.top; + int color = ((ColorDrawable)drawable).getColor(); + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.drawARGB(Color.alpha(color), Color.red(color), Color.green(color), Color.blue(color)); + return bitmap; + } else { + return null; + } + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/view/NoScrollRecyclerView.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/NoScrollRecyclerView.java new file mode 100644 index 0000000..051e9f0 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/NoScrollRecyclerView.java @@ -0,0 +1,32 @@ +package com.fly.guilingl.view; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; + +/** + * Created by Fly on 2019/1/11/011. + */ + +public class NoScrollRecyclerView extends RecyclerView { + public NoScrollRecyclerView(Context context) { + super(context); + } + + public NoScrollRecyclerView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public NoScrollRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); + super.onMeasure(widthMeasureSpec, expandSpec); + } + +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/view/SettingItemClickView.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/SettingItemClickView.java new file mode 100644 index 0000000..396c8ed --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/SettingItemClickView.java @@ -0,0 +1,60 @@ +package com.fly.guilingl.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.fly.guilingl.R; + + +/** + * 自定义组合控件 + *

+ * 1. 写一个类继承RelativeLayout(ViewGroup) 2. 写布局文件 3. + * 将布局添加到RelativeLayout中(initView方法) 4. 增加api 5. 自定义属性(1. values/attrs.xml, 2. + * 声明命名空间 , 3.在自定义view中配置属性, 4. 在自定义view中加载属性值 ) + * + * @author Kevin + */ +public class SettingItemClickView extends RelativeLayout { + + private TextView tvTitle; + private ImageView ivTitle; + + public SettingItemClickView(Context context) { + super(context); + initView(); + } + + public SettingItemClickView(Context context, AttributeSet attrs, + int defStyle) { + super(context, attrs, defStyle); + initView(); + } + + public SettingItemClickView(Context context, AttributeSet attrs) { + super(context, attrs); + initView(); + } + + // 初始化布局 + private void initView() { + View child = View.inflate(getContext(), R.layout.setting_item_click_view, null);// 初始化组合控件布局 + tvTitle = (TextView) child.findViewById(R.id.tv_title); + ivTitle = (ImageView) child.findViewById(R.id.iv_title); + this.addView(child);// 将布局添加给当前的RelativeLayout对象 + } + + // 设置标题 + public void setTitle(String title) { + tvTitle.setText(title); + } + + //设置icon + public void setIvTitle(int id){ + ivTitle.setBackgroundResource(id); + } +} diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/view/WrapRecyclerView.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/WrapRecyclerView.java new file mode 100644 index 0000000..a8c843f --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/WrapRecyclerView.java @@ -0,0 +1,54 @@ +package com.fly.guilingl.view; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.View; + + +import java.util.ArrayList; + +/** + * Created by Fly on 2017/12/15. + */ + +public class WrapRecyclerView extends RecyclerView { + private ArrayList mHeaderViewInfos = new ArrayList(); + private ArrayList mFooterViewInfos = new ArrayList(); + private Adapter mAdapter; + + public WrapRecyclerView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void addHeaderView(View v) { + mHeaderViewInfos.add(v); + + // Wrap the adapter if it wasn't already wrapped. + if (mAdapter != null) { + if (!(mAdapter instanceof WrapRecyclerViewAdapter)) { + mAdapter = new WrapRecyclerViewAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter); + } + } + } + + public void addFooterView(View v) { + mFooterViewInfos.add(v); + // Wrap the adapter if it wasn't already wrapped. + if (mAdapter != null) { + if (!(mAdapter instanceof WrapRecyclerViewAdapter)) { + mAdapter = new WrapRecyclerViewAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter); + } + } + } + + @Override + public void setAdapter(Adapter adapter) { + if (mHeaderViewInfos.size() > 0 || mFooterViewInfos.size() > 0) { + mAdapter = new WrapRecyclerViewAdapter(mHeaderViewInfos, mFooterViewInfos, adapter); + } else { + mAdapter = adapter; + } + super.setAdapter(mAdapter); + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/java/com/fly/guilingl/view/WrapRecyclerViewAdapter.java b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/WrapRecyclerViewAdapter.java new file mode 100644 index 0000000..2860f94 --- /dev/null +++ b/GuiLinGL/app/src/main/java/com/fly/guilingl/view/WrapRecyclerViewAdapter.java @@ -0,0 +1,120 @@ +package com.fly.guilingl.view; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewGroup; + + +import java.util.ArrayList; + +/** + * Created by Fly on 2017/12/15. + */ + +public class WrapRecyclerViewAdapter extends RecyclerView.Adapter { + private RecyclerView.Adapter mAdapter; + private ArrayList mHeaderViewInfos; + private ArrayList mFooterViewInfos; + + private ArrayList mList; + private final int ITEM_1PIC = 1; + private final int ITEM_3PIC = 2; + private Context mContext; + + public WrapRecyclerViewAdapter(ArrayList list, Context ctx) { + mList = list; + mContext = ctx; + } + + public WrapRecyclerViewAdapter(ArrayList headerViewInfos, ArrayList footerViewInfos, RecyclerView.Adapter adapter) { + mAdapter = adapter; + + if (headerViewInfos == null) { + mHeaderViewInfos = new ArrayList(); + } else { + mHeaderViewInfos = headerViewInfos; + } + + if (footerViewInfos == null) { + mFooterViewInfos = new ArrayList(); + } else { + mFooterViewInfos = footerViewInfos; + } + } + + @Override + public int getItemCount() { + if (mAdapter != null) { + return getFootersCount() + getHeadersCount() + mAdapter.getItemCount(); + } else { + return getFootersCount() + getHeadersCount(); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + //也要划分三个区域 + int numHeaders = getHeadersCount(); + if (position < numHeaders) {//是头部 + return; + } + //adapter body + final int adjPosition = position - numHeaders; + int adapterCount = 0; + if (mAdapter != null) { + adapterCount = mAdapter.getItemCount(); + if (adjPosition < adapterCount) { + mAdapter.onBindViewHolder(holder, adjPosition); + return; + } + } + } + + @Override + public int getItemViewType(int position) { + //判断当前条目是什么类型的---决定渲染什么视图给什么数据 + int numHeaders = getHeadersCount(); + if (position < numHeaders) {//是头部 + return RecyclerView.INVALID_TYPE; + } + //正常条目部分 + // Adapter + final int adjPosition = position - numHeaders; + int adapterCount = 0; + if (mAdapter != null) { + adapterCount = mAdapter.getItemCount(); + if (adjPosition < adapterCount) { + return mAdapter.getItemViewType(adjPosition); + } + } + //footer部分 + return RecyclerView.INVALID_TYPE - 1; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + //header + if (viewType == RecyclerView.INVALID_TYPE) { + return new HeaderViewHolder(mHeaderViewInfos.get(0)); + } else if (viewType == RecyclerView.INVALID_TYPE - 1) {//footer + return new HeaderViewHolder(mFooterViewInfos.get(0)); + } + return mAdapter.onCreateViewHolder(parent, viewType); + } + + public int getHeadersCount() { + return mHeaderViewInfos.size(); + } + + public int getFootersCount() { + return mFooterViewInfos.size(); + } + + private static class HeaderViewHolder extends RecyclerView.ViewHolder { + + public HeaderViewHolder(View view) { + super(view); + } + } +} \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/anim/dialog_enter.xml b/GuiLinGL/app/src/main/res/anim/dialog_enter.xml new file mode 100644 index 0000000..f99665d --- /dev/null +++ b/GuiLinGL/app/src/main/res/anim/dialog_enter.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/anim/dialog_exit.xml b/GuiLinGL/app/src/main/res/anim/dialog_exit.xml new file mode 100644 index 0000000..51a3e50 --- /dev/null +++ b/GuiLinGL/app/src/main/res/anim/dialog_exit.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/anim/enter.xml b/GuiLinGL/app/src/main/res/anim/enter.xml new file mode 100644 index 0000000..1f1362e --- /dev/null +++ b/GuiLinGL/app/src/main/res/anim/enter.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/anim/exit.xml b/GuiLinGL/app/src/main/res/anim/exit.xml new file mode 100644 index 0000000..6d4cc09 --- /dev/null +++ b/GuiLinGL/app/src/main/res/anim/exit.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/bg_amount_layout.xml b/GuiLinGL/app/src/main/res/drawable/bg_amount_layout.xml new file mode 100644 index 0000000..e686cf0 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/bg_amount_layout.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/bg_btn_normal.9.png b/GuiLinGL/app/src/main/res/drawable/bg_btn_normal.9.png new file mode 100644 index 0000000..41516e2 Binary files /dev/null and b/GuiLinGL/app/src/main/res/drawable/bg_btn_normal.9.png differ diff --git a/GuiLinGL/app/src/main/res/drawable/bg_btn_pressed.9.png b/GuiLinGL/app/src/main/res/drawable/bg_btn_pressed.9.png new file mode 100644 index 0000000..efb3d87 Binary files /dev/null and b/GuiLinGL/app/src/main/res/drawable/bg_btn_pressed.9.png differ diff --git a/GuiLinGL/app/src/main/res/drawable/btn_amount.xml b/GuiLinGL/app/src/main/res/drawable/btn_amount.xml new file mode 100644 index 0000000..d59a40f --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/btn_amount.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/check_state.xml b/GuiLinGL/app/src/main/res/drawable/check_state.xml new file mode 100644 index 0000000..f0b4e71 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/check_state.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/divider.xml b/GuiLinGL/app/src/main/res/drawable/divider.xml new file mode 100644 index 0000000..4852062 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/divider.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/ic_launcher_background.xml b/GuiLinGL/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..d5fccc5 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GuiLinGL/app/src/main/res/drawable/selector_bg.xml b/GuiLinGL/app/src/main/res/drawable/selector_bg.xml new file mode 100644 index 0000000..d811cf1 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/selector_bg.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/selector_btn_bg.xml b/GuiLinGL/app/src/main/res/drawable/selector_btn_bg.xml new file mode 100644 index 0000000..a3369e3 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/selector_btn_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/shape_point_normal.xml b/GuiLinGL/app/src/main/res/drawable/shape_point_normal.xml new file mode 100644 index 0000000..93e018a --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/shape_point_normal.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/shape_point_selected.xml b/GuiLinGL/app/src/main/res/drawable/shape_point_selected.xml new file mode 100644 index 0000000..27abe73 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/shape_point_selected.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/shape_point_selector.xml b/GuiLinGL/app/src/main/res/drawable/shape_point_selector.xml new file mode 100644 index 0000000..1353a19 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/shape_point_selector.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/txt_sharp.xml b/GuiLinGL/app/src/main/res/drawable/txt_sharp.xml new file mode 100644 index 0000000..605e87d --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/txt_sharp.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/txt_tuo.xml b/GuiLinGL/app/src/main/res/drawable/txt_tuo.xml new file mode 100644 index 0000000..d863138 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/txt_tuo.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/drawable/txt_yellow.xml b/GuiLinGL/app/src/main/res/drawable/txt_yellow.xml new file mode 100644 index 0000000..19cb3e5 --- /dev/null +++ b/GuiLinGL/app/src/main/res/drawable/txt_yellow.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/layout/activity_catelog.xml b/GuiLinGL/app/src/main/res/layout/activity_catelog.xml new file mode 100644 index 0000000..6c3cd07 --- /dev/null +++ b/GuiLinGL/app/src/main/res/layout/activity_catelog.xml @@ -0,0 +1,33 @@ + + + + + > + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/layout/activity_collection.xml b/GuiLinGL/app/src/main/res/layout/activity_collection.xml new file mode 100644 index 0000000..e2c94ae --- /dev/null +++ b/GuiLinGL/app/src/main/res/layout/activity_collection.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GuiLinGL/app/src/main/res/layout/activity_coment.xml b/GuiLinGL/app/src/main/res/layout/activity_coment.xml new file mode 100644 index 0000000..1117a85 --- /dev/null +++ b/GuiLinGL/app/src/main/res/layout/activity_coment.xml @@ -0,0 +1,64 @@ + + + + > + + + + + + +