随笔分类 -  Android

摘要:想要实现一个在ViewPager中嵌一个ViewFlipper实现类似豌豆荚中的广告栏功能,试了好久,发现父控件总是干扰子控件的操作,表现为手势滑动ViewFlipper中的图片时,ViewPager也跟着滑。最后终于找到解决办法:在生成的手势识别类中添加的OnGestureListener中,复写onDown()方法内添加一句话:public boolean onDown(MotionEvent e) { // 通知父控件此操作为子控件,请不要干扰 flipper.getParent().requestDisallowInterceptTouchE... 阅读全文
posted @ 2013-07-09 17:06 来杯冰镇魔卡 阅读(480) 评论(0) 推荐(0)
摘要:ViewFlipper组件可以让你在activity中的一块区域实现自动动画效果切换图片的效果,若要手势切换,还需要GestureDetector的支持首先写出布局文件,这里就简单的只添加一个ViewFlipper: View Code 然后写出几个定义动画的xml文件,这里只给出一个例子: --> View Code 最后写activity:import android.os.Bundle;import android.app.Activity;import android.view.GestureDetec... 阅读全文
posted @ 2013-07-09 14:42 来杯冰镇魔卡 阅读(1396) 评论(0) 推荐(1)
摘要:一般进入一个App都会有一个启动画面,此时后台可以加载一些耗时的资源,同时一个好的启动画面也会让用户觉得很舒服。下面我们就来实现一个最简单的启动画面。一个启动画面实际上就是一个Activity,到了一定时间之后finish掉并跳转到主Activity,所以我们先来写启动Activity的布局文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android: 阅读全文
posted @ 2013-05-24 17:29 来杯冰镇魔卡 阅读(335) 评论(0) 推荐(0)
摘要:在网上找了很多方法,但最后都有问题,自己调试了好几个小时,最后终于完美解决了竖屏识别。首先你需要有zxing项目的简化版代码,在这里。使用简化版可以免去许多不必要的代码,方便学习研究,更好定位核心功能。如果你调试成功后,就可以着手修改将其变为竖屏识别了。第1步:在AndroidManifest中将CaptureActivity的screenOrientation属性做如下修改:android:screenOrientation="portrait" 第2步:我们要把摄像头预览景调为竖向CameraConfigurationManager类中的setDesiredCamera 阅读全文
posted @ 2013-05-24 15:16 来杯冰镇魔卡 阅读(6166) 评论(1) 推荐(1)
摘要:下单系统的几个主要功能模块经过了模拟器的调试之后,我们连接了真机(小米2)进行调试,又发现了不少问题,经过一番排查逐一解决掉了,遂在此做一个小结。1. 仍然是Android3.0以上系统主UI线程不能使用网络操作问题,我们加上下面2段代码即可,但这只是权宜之计,真正的解决办法是把所有网络操作放入线程中进行StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().... 阅读全文
posted @ 2013-05-20 16:44 来杯冰镇魔卡 阅读(324) 评论(0) 推荐(0)
摘要:更新菜单的客户端编程也与更新桌号完全一样,在UpdateActivity中把updateMenus()方法编写完成即可: private void updateMenus() { String urlString = HttpUtil.BASE_URL + "servlet/UpdateMenuServlet"; InputStream is = null; URLConnection conn = null; try { // 实例化目标servlet的地址并取得连接的输入流 ... 阅读全文
posted @ 2013-05-20 13:12 来杯冰镇魔卡 阅读(276) 评论(0) 推荐(0)
摘要:更新菜单与更新桌号步骤完全一样,需要注意的是菜单名称含有中文,所以在servlet中将信息以xml形式发出时,应注意将其编码设定为gbk,如下:<?xml version='1.0' encoding='gbk'?>新建Menu数据实体类:public class Menu { private int id; private int price; private int typeId; private String name; private String pic; private String remark; getters & sette 阅读全文
posted @ 2013-05-20 12:59 来杯冰镇魔卡 阅读(250) 评论(0) 推荐(0)
摘要:在客户端中我们使用一个ListActivity,这样可以无需布局文件,直接获得其ListView填充功能选项并复写其onListItemClick方法。这里我们先把“更新桌号信息”和“更新菜单信息”的界面都写出来,但先实现“更新桌号信息”功能。新建一个ListActivity的子类UpdateActivity,并准备界面:public class UpdateActivity extends ListActivity{ ListView listView = null; ListAdapter adapter = null; String[] items = {"更新... 阅读全文
posted @ 2013-05-20 11:33 来杯冰镇魔卡 阅读(339) 评论(0) 推荐(0)
摘要:更新功能模块的功能是实现客户端的数据与服务器端数据的同步,如果服务器端添了桌台,或者添了新的菜品,我们可以直接使用更新功能把最新的数据同步到客户端的Sqlite对应的表中。此功能涉及2个表的更新:tabletbl和menutbl。本篇先讨论tabletbl更新的服务器端编写。首先建立table表的实体类:public class Table { // 桌号 private int id; // 数量 private int num; // 是否有人标记 private int flag; // 描述 private String descript... 阅读全文
posted @ 2013-05-20 11:08 来杯冰镇魔卡 阅读(286) 评论(0) 推荐(0)
摘要:在主操作界面中点击“结台”,跳转到查询支付账单界面PayActivity,先为其编写布局文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientati 阅读全文
posted @ 2013-05-17 16:09 来杯冰镇魔卡 阅读(459) 评论(0) 推荐(0)
摘要:接下来是最后一步,客户端点击“结算”按钮,服务器端需要需要做两件事:1. 把此订单的isPay字段置位,表示此订单已经结算。2. 把此订单对应的桌子的flag字段清零,表示已经没人占用此桌。要实现第一点,我们在PayDao与PayDaoImpl中添加一个方法pay():@Override public void pay(int id) { // jdbc连接数据库准备工作 DBUtil util = new DBUtil(); Connection conn = util.openConnection(); ... 阅读全文
posted @ 2013-05-17 15:04 来杯冰镇魔卡 阅读(343) 评论(0) 推荐(0)
摘要:这次我们向主订单信息下面添加订单明细信息,也是遵循DAO模式,然后将数据拼成html传回客户端com.moka.entity中新建一个实体类QueryOrderDetail:/** * 用于封装查一个对应订单的明细信息的实体类 */public class QueryOrderDetail { // 菜名 private String dishName; // 菜价 private int price; // 数量 private int dishNum; // 总价 private int totalPrice; // 备注 ... 阅读全文
posted @ 2013-05-17 11:55 来杯冰镇魔卡 阅读(318) 评论(0) 推荐(0)
摘要:完成了下单功能后,我们来编写结算功能模块,结算的主要流程为:客户端传送主订单号 ---> 服务器端接收请求 ---> 根据主订单号取出所有与该订单有关的信息 ---> 将其编写为html 传回客户端的WebView直接加载显示这一部分的服务器端实现分为上下两个部分,第一部分我们先让服务器返回主订单信息显示。我们依然使用DAO设计来实现,首先设计出一个实体类来封装根据对应订单号查出的主订单信息:com.moka.entity中新建QueryOrder.java:/** * 用于封装查一个对应订单的信息的实体类 */public class QueryOrder { // 服务员 阅读全文
posted @ 2013-05-16 18:20 来杯冰镇魔卡 阅读(363) 评论(0) 推荐(0)
摘要:本篇来编写Activity中的操作,使用的仍然是OrderActivity。本次编写的功能比较多,主要是要用于选择菜品,数量等信息后,将其填入下方ListView中显示出来,ListView中已点菜品可删除,最后下单。OrderActivity准备各种组件等变量,绑定监听事件:public class OrderActivity extends Activity { // 主界面组件 private Spinner tableNoSpinner = null; private EditText personNumEditText = null; private ... 阅读全文
posted @ 2013-05-16 17:27 来杯冰镇魔卡 阅读(315) 评论(0) 推荐(0)
摘要:接下来,我们完成客户端的添单功能。选择添菜弹出一个Dialog,选择菜品,输入数量与备注后,显示在下方的ListView中。为了方便,我们仍选择在客户端本地建立sqlite菜品表,并为其编写一个ContentProvider本篇依然先介绍数据库与ContentProvider等准备工作的编写。在com.moka.provider包中,先定义关于菜品表的元数据:public interface Menus extends BaseColumns { // 注意,此处AUTHORITY一定要和Manifest.xml中的配置完全相同 public static final ... 阅读全文
posted @ 2013-05-15 18:11 来杯冰镇魔卡 阅读(341) 评论(0) 推荐(0)
摘要:对于点菜来说,首先要有菜单,我们建立一张表menutbl来容纳所有菜品数据,此表结构如下:为了具体记录每个订单点了什么菜,点多少,我们还需要建立一张表orderdetailtbl来实现,此表结构如下:注:orderId与menuId为外键:orderId为ordertbl中的id字段,menuId为menutbl中的id字段于是,在服务器端的编程大体与开桌功能相同:建立该表实体类 ---> 写其DAO接口 ---> 实现该接口,这里我们仍然沿用上次建立的OrderDao接口,只在其中新添加一个方法saveOrderDetail()即可。WirelessServer中的com.mok 阅读全文
posted @ 2013-05-15 17:40 来杯冰镇魔卡 阅读(345) 评论(0) 推荐(0)
摘要:本篇来讨论OrderActivity中的具体操作组件等准备:public class OrderActivity extends Activity { private Spinner tableNoSpinner = null; private EditText personNumEditText = null; private Button startBtn, addMealBtn, orderBtn; @Override protected void onCreate(Bundle savedInstanceState) { su... 阅读全文
posted @ 2013-05-15 09:24 来杯冰镇魔卡 阅读(315) 评论(0) 推荐(0)
摘要:所谓开桌功能,就是由操作员录入待开桌号与客人人数,把这些信息传送到数据库服务器端的ordertbl表中,而为了减轻服务器端负担,我们将关于桌号等一些信息的表存入客户端的sqlite数据库中,方便客户端读取。而对本地sqlite数据的操作则借助于我们自己编写的ContentProvider类实现。由于有一定的难度,我们把这部分分为上下两个部分,本部分先讨论本地Sqlite的建立,ContentProvider的一些准备工作。在项目Wireless的com.moka.provider目录中,新建一个元数据接口Tables继承BaseColumns,public interface Tables e 阅读全文
posted @ 2013-05-14 17:58 来杯冰镇魔卡 阅读(254) 评论(0) 推荐(0)
摘要:为了实现顾客下单的功能,需要在MySQL数据库的中设置一张表:ordertbl然后在服务器端的Wireless项目下的com.moka.entity包中新建一个此表的对象类Order,就像登录部分的User一样:/** * 用于封装OrderTbl表的实体类 */public class Order { // 此订单编号 private int id; // 下单时间 private String orderTime; // 操作用户id private int userId; // 开桌台号 private int tableId; ... 阅读全文
posted @ 2013-05-14 17:21 来杯冰镇魔卡 阅读(332) 评论(0) 推荐(0)
摘要:我们向上一个系统中增加一些功能,在成功登陆后,跳转到一个主操作界面,此界面为所有功能的入口,用一个GridView来实现GridView的经典实现方法流程:布局文件中声明GridView ---> 编写一个ImageAdapter继承BaseAdapter并主要复写getView()方法 ---> 给GridView添加此adapter布局文件很简单:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schema 阅读全文
posted @ 2013-05-14 16:48 来杯冰镇魔卡 阅读(534) 评论(0) 推荐(0)