您的位置:首页 > 移动开发 > Android开发

android从放弃到精通 第五天 excellent

2017-12-09 23:10 246 查看
4-1快递查询-RxVolley获取接口数据

物流,时间轴实现

物流信息使用聚合数据进行获取,免费的操作次数为100次,足够用来进行开发功能

获取AppKey,并保存到StaticClass中,通过www.json.cn来进行在线json的解析

返回的json数据中有一个status参数,可能值为1/0,如果为0,表示这个单号信息还有可能继续更新,如果为1,则表示这个快递单号信息不会再更新(签收,退回等最终状态)

RxVolley可以从github进行获取

1.添加gradle

compile 'com.kymjs.rxvolley:rxvolley:1.1.0'//添加完后会和Bmob产生冲突

2.在UserFragment物流查询设置点击事件,点击之后跳转到CourierActivity

CourierActivity中总共有三个组件,两个EditView和一个Button

分别用来储存公司编号,快递编码

在点击按钮之后,

1.获取输入框的内容

2.判断是否为空

3.拿到数据去请求数据(Json)

4.解析Json

5.listview适配器

6.实体类(item的布局)

7.设置数据/显示效果

4-4归属地查询-RxVolley获取并解析接口数据

所谓的键盘逻辑以及调用第三方接口实现归属地查询的操作

本来以为键盘逻辑是为了实现自定义键盘这样的比较高级的技术,但是很遗憾,这里所使用的只有使用一个LinearLayout来实现相应的布局

本来还以为会接触到具体的点击之外的窗口来隐藏键盘的功能,但是很遗憾,这里依然也只字未提

主要的功能实现如下,界面设计方面是首先是一个号码输入框,EditText用于显示对应的电话号码

这里就奇怪了,明明就不打算调用系统的键盘,那么直接使用textView就行了嘛,那位为什么还需要使用吃力不讨好的Edittext呢

然后就是使用一张Imageview来显示运营商信息,目测想要实现的功能是按照不同的号码运营商,来显示不同的运营商logo

最后是使用Linearlayout来进行Button的排列,排列分别为

1,2,3,DEL,

4,5,6,0,

7,8,9,查询

这样一来界面方面的设计就完成了,说起来,我真的很想再去看看动画方面的效果啊= =,毕竟动画方面一直是我想弄但是却弄不出来的功能= =

接口方面一般都是调用相应的聚合数据的第三方接口,这个在这里是完全免费的

然后就是所谓的键盘逻辑的具体内容了

1.获取输入框的内容

2.判断是否为空

3.网络请求

4.解析JSON

5.结果显示

//这里感觉以前实现的android小游戏的内容可以加进来使用,比如说输入到一半的文本框的搜索之类的

2017-12-09 先实现以上功能吧,毕竟界面设计还是比较麻烦的事情

这里个人感觉还是直接使用textview比较好,按照自己想法来吧= =

思考一下,怎么按照点击数字的时候来显示对应的数字

1.获取到输入框的内容

String str = et_number.getText().toString();

et_number.setText(str+((Button)view).getText();

//通过获取当前button的字符加到对应的字符串后

移动光标et_number.setSelection(str.lenth()+1);

然后是设置删除的操作,短按del键删除对应字符串的最后的字符

然后是长按操作,执行的操作是删去对应字符串中的所有数据

btn_del.setOnLongClick(new ...)...

最后是一个比较简单的小功能,也就是在已经完成查询之后当新键入一个数字的时候,默认清空原来的字符串的效果,这个也比较简单

来回想一下从以前开始就一直纠结的事情吧,当点击按钮或者组件的时候是默认触发一个线程用来修改UI界面的,但是如果是做的异步操作的话,那么就必须借助handler兄弟进行操作了

如果将onLongClick返回false,那么执行完长按事件后,还有执行单击事件。 

如果返回true,只执行长按事件

1.获取输入框的内容

String name = et_name.getText().toString();

String number = et_number.getText().toString();

//拼接url,通过字符串操作来拼出对应的get链接路径

2.判断是否为空,老套路了,就不赘述了

3.利用rxVolley来进行数据get的操作,如果请求数据成功,那么显示对应的json数据

解决jar包冲突,这里的是bmob和rxvolley出现的冲突

例如 A(DD) __B(D) __C(D)这个时候A不知道该用哪个D
这个里出现了一个新的问题:为什么exclude操作需要在两个文件中同时进行?

4-4归属地查询-RxVolley获取并解析接口数据

所谓的键盘逻辑以及调用第三方接口实现归属地查询的操作

本来以为键盘逻辑是为了实现自定义键盘这样的比较高级的技术,但是很遗憾,这里所使用的只有使用一个LinearLayout来实现相应的布局

本来还以为会接触到具体的点击之外的窗口来隐藏键盘的功能,但是很遗憾,这里依然也只字未提

主要的功能实现如下,界面设计方面是首先是一个号码输入框,EditText用于显示对应的电话号码

这里就奇怪了,明明就不打算调用系统的键盘,那么直接使用textView就行了嘛,那位为什么还需要使用吃力不讨好的Edittext呢

然后就是使用一张Imageview来显示运营商信息,目测想要实现的功能是按照不同的号码运营商,来显示不同的运营商logo

最后是使用Linearlayout来进行Button的排列,排列分别为

1,2,3,DEL,

4,5,6,0,

7,8,9,查询

这样一来界面方面的设计就完成了,说起来,我真的很想再去看看动画方面的效果啊= =,毕竟动画方面一直是我想弄但是却弄不出来的功能= =

接口方面一般都是调用相应的聚合数据的第三方接口,这个在这里是完全免费的

然后就是所谓的键盘逻辑的具体内容了

1.获取输入框的内容

2.判断是否为空

3.网络请求

4.解析JSON

5.结果显示

//这里感觉以前实现的android小游戏的内容可以加进来使用,比如说输入到一半的文本框的搜索之类的

2017-12-09 先实现以上功能吧,毕竟界面设计还是比较麻烦的事情

这里个人感觉还是直接使用textview比较好,按照自己想法来吧= =

思考一下,怎么按照点击数字的时候来显示对应的数字

1.获取到输入框的内容

String str = et_number.getText().toString();

et_number.setText(str+((Button)view).getText();

//通过获取当前button的字符加到对应的字符串后

移动光标et_number.setSelection(str.lenth()+1);

然后是设置删除的操作,短按del键删除对应字符串的最后的字符

然后是长按操作,执行的操作是删去对应字符串中的所有数据

btn_del.setOnLongClick(new ...)...

最后是一个比较简单的小功能,也就是在已经完成查询之后当新键入一个数字的时候,默认清空原来的字符串的效果,这个也比较简单

来回想一下从以前开始就一直纠结的事情吧,当点击按钮或者组件的时候是默认触发一个线程用来修改UI界面的,但是如果是做的异步操作的话,那么就必须借助handler兄弟进行操作了

如果将onLongClick返回false,那么执行完长按事件后,还有执行单击事件。 

如果返回true,只执行长按事件

5-1机器人聊天-对话adapter的实现

界面配置,使用listView实现对话的效果

界面上方有一个listview,然后界面底端有两个按钮,分别是左边和右边

listview,根据type来区分,如果是左则显示左边的对话框,如果是右边则显示右侧的对话栏

创建一个适配器集成baseadapter,常规的操作就不谈了,因为感觉都差不多,这里只采用有用的操作

用于储存数据的操作的类中有一个type的变量用来区分左边还是右边的操作

感觉这里需要用到.9操作

//分别是左边和右边的type

public static final int VALUE_LEFT_TEXT = 1;

public static final int VALUE_RIGHT_TEXT = 2;

//根据数据源的position来返回要显示的item的type

@Override

public int getItemViewType(int position) {
CharListData data = mList.get(position);
int type = data.getType();
return type;

}

//返回所有的layout数据,但是这里为什么是3还需要想想,查一下

public int getViewTypeCount() {
return 3;//mlist.size() + 1

}

//然后基于这里的特殊情况,作者定义了两个viewholder,分别容纳了一个textview,感觉这里也对= =,毕竟如果要达到每次提取都不用花时间再次实例化,还是分开比较好,毕竟如果用同一个进行储存,到最后还是至少需要设置textview的背景的= =,这样就一点都不划算了= =,等等,这里感觉还有一个问题,那就是为什么只有一个textview,至少不是还需要显示头像之类的吗= =,对对对,这里头像可以直接在布局里面定义,是相对于textview静止的存在,所以没有必要特别用viewholder来进行容纳,但是如果是多人同步聊天的时候,你就必须要进行区别了!

//关键中的关键部分getView()方法

public getView(int position, View contentView, ViewGroup parent) {
ViewHolderText viewholderleft = null;
ViewHolderText viewholderright = null;
int type = getItemViewType(position);
//根据不同的布局进行相应的创建实例化对象的操作
if(type == left) {
viewHolderLeft = new ViewHolderLeftText();
contentView = inflate.inflate(R.layout.left_item, null);
viewHolderLeft.tv_left_text = contentView.findViewById()...
contentView.setTag(viewholder);
}
else(type == right) {
//同理
}//以上是第一次初始化对应的操作

//不是第一次进行的操作= =,这里略

}

接下来对activity的控件进行初始化,老样子都是找到fragment中的组件,作者这里并没有将fragment的view进行保存,而是直接在oncreate方法中调用findview()的方法,参数为fragmentview,毕竟我经验不多,还是学者来吧

//设置适配器,设置左右两个按钮的点击触发时间

addleftitem(string) //添加左边的文本 {
CharListData data = new CharListData();
data.setType(CharListAdapter.VALUE_RIGHT_TEXT);
data.setText(text);
mList.add(data);
//通知adapter刷新
adapter.notifyDataSetChanged();
//滚动到底部
mChatListView.setSelection(mChatListView.getBottom());

}

addrightitem(string) //添加右边的文本

小结:总结一下这节课的内容吧,首先,为什么有那么两个及其变扭的button呢,因为当前还没有介入第三方api所以这里还是打算尝试着单纯通过点击不同的按钮来模拟相应的数据信息,尝试构想,如果面对长期考验那么必须需要使用数据库进行相关数据的储存的工作.

直接在今天进行图灵机器人api的调用

逻辑

1.获取输入框的内容

2.判断是否为空

3.判断长度不能大于字段的最长长度 info 长度1-30, userid 长度1-32

4.发送给机器人请求返回内容

5.清空当前的输入框

6.添加你内容的内容到right_item

7.拿到机器人的返回值添加到leftitem
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: