Android
Android开发的经验总结。
天杪
读读论文,顺利毕业就好。
展开
-
在ViewPager2中使用menu
我这个项目中用的是ViewPager2,但是和ViewPager应该差不多。 项目中有这么一个需求:在ViewPager中的Fragment中分别显式状态栏上的menu。有的Fragment上不显示,有的显示,状态栏在ViewPager外。经过我的整理结果如下。 我的项目ViewPager2也是在一个Fragment中的,所以 onCreateView中添加setHasOptionsMenu(true) //不是在Fragment中的不用加这个。viewPager.registerOnPageC原创 2020-05-08 20:59:06 · 286 阅读 · 0 评论 -
ViewPager2与SwipeRefreshLayout滑动冲突问题的解决
谷歌推荐升级到ViewPager2,我其实是比较关注他的懒加载功能。可是到了项目后期我们反而需要同时加载多个Fragment了。但这与这篇文章无关。 先说说冲突的背景。我们是在ViewPager2中的Fragment使用了SwipeRefreshLayout。当向下滑动时只要稍微偏左或右都会触发ViewPager2的移动,造成SwipeRefreshLayout卡在页面上不消失。 我们首先准备修改ViewPager2,可是它没法继承。那么目光只好投向SwipeRefreshLayout。cla原创 2020-05-08 20:44:56 · 2399 阅读 · 2 评论 -
关于Intent中传递post表单打开网页
项目中用到了腾讯的兔小巢作为反馈平台。官方的文档说的很清楚,就是采用webview打开一个url链接。但我认为这种做法可能会受到腾讯的限制。因此需要自定义登录态。我们项目中已经实现了QQ登录,因此只需传相关的参数即可。但我偷懒不想在webview中实现上传图片的功能,于是干脆使用Intent打开浏览器吧。这里面有个难点——使用Intent如何实现Post请求。答案就是把参数添加到url中。但是这里面还有一个坑。那就是转义。我们做的这个url中还有一个url,那么中间嵌套着的url要对&进行转原创 2020-05-08 20:31:57 · 360 阅读 · 0 评论 -
ViewPage2简单使用
为了解决ViewPager的懒加载问题,搜了一圈发现谷歌推出了升级版ViewPager2,貌似自带就懒加载。升级也十分简单build.gradle 添加依赖 implementation "androidx.viewpager2:viewpager2:1.0.0"xml配置viewPager2就不说了。适配器继承FragmentStateAdapter,重写getItemCount...原创 2020-04-11 22:11:36 · 1023 阅读 · 0 评论 -
RecyclerView中的ItemView findViewById 出现null
又碰到了一个恶心的BUG,如题目所示,findViewById是个空值。容我再想想,先去散散心。回来之后终于发现问题了,原来我设置的id是 <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_con...原创 2020-04-11 15:55:41 · 1090 阅读 · 0 评论 -
Retrofit 上传二进制数据
项目中有要上传一个二进制的图片的需求,网上搜了好久,也没有找到合适的办法。之前尝试public interface UpPicService { @POST("SelfStudy") Call<ResponseBody> postPic(@Body byte[] aab);}提示我出错java.lang.IllegalArgumentException:...原创 2020-04-10 20:35:56 · 1559 阅读 · 1 评论 -
启航
时光荏苒啊,这个博客也很久没有更新了。我最近在反思自己的安卓项目,深深感觉项目中的问题十分的多,我认为重构还不如直接重写一遍。 但是如果重写的话,知识储备跟不上。我目前的工具书都是过时的,直接能取前沿的只有谷歌官方的文档了。但是那个文档并没有多少条理性。因此在这些日子里,归纳理解项目。重新设计我的软件,提高自己的知识水平。 Jetpack 我来了!...原创 2020-01-22 23:45:12 · 144 阅读 · 0 评论 -
棋类游戏的悔棋功能
最近再完成一个棋类游戏的项目。其中悔棋的功能卡住了我半天,原理都懂,就是利用栈的回退功能。可是我回退了之后发现和没回退没什么两样。。。我使用一个List来保存棋子的坐标,每走一步之前都把List压入栈。出了问题之后,调试出来的结果让我大吃一惊,栈里面的东西都是一样。后来想明白了,可以这样理解为栈保存的是List的地址(当然这样理解有错误),可是List的地址从来没有变过,因此每次回退得到的数据...原创 2018-10-21 10:28:35 · 1389 阅读 · 0 评论 -
五子棋的实现“慕课网五子连珠的笔记”
慕课网的视频首先创建了一个类,这个类继承了View,去实现这个类的构造方法,实现其两个参数的构造方法,老师建议自己写的过程中对这些构造方法都进行实现。在布局文件中对这个类进行使用,注意是包名。宽高都是match_parent;double-xxhdpi的文件夹里面可以放一些尺寸比较大的图片。在View中设置了一个background,setBackground(#0x44ff0000)...原创 2018-10-09 22:04:28 · 410 阅读 · 0 评论 -
《第一行代码》编写精美的聊天界面UIBestPractice+蓝牙功能
正在学习《第一行代码》,之前发过学习编写精美的聊天界面的笔记,后来我就在想这个界面十分的美观大气,那么为何不在这个应用的基础上开发出来蓝牙模块?经过几天的学习,主要是因为Android Studio 的模拟器不支持蓝牙,而我也没有第二部手机,因此导致了很多的bug没法调试。经过几天熟悉了蓝牙的开发步骤后,在GitHub上找到了经典蓝牙的开源库BluetoothSPP,这个库使用起来很方便,开发者对...原创 2018-10-09 15:09:39 · 597 阅读 · 0 评论 -
《第一行代码》实现强制下线功能
第5章的内容不是很多,也很简单,最后的这个小项目总结一下。强制下线功能就是类似于QQ的那个,在重复上线时把你顶掉线,我们要做的就是在页面上点击一下按钮,弹出来对话框,点击对话框,就会回到登录界面,不可返回。这意味着,当点击按钮的同时,系统把所有的的活动都杀死掉,然后重新启动登录活动。这里需要一个管理所有活动的类;那个按钮肯定是一个广播发射器,我们需要一个接收器,我们会想那应该每个界面都需要...原创 2018-10-04 15:12:25 · 979 阅读 · 0 评论 -
《第一行代码》 第五章:全局大喇叭 笔记(基于Android8.0)
由于Android8.0对广播机制做了很大的调整理,导致《第一行代码》中很多实例无法正常运行,因此我结合书本,自行整理了一下。广播需要接收器和发送器。系统的动作都会发送一条广播,例如电量的变化,系统的开机。我们的应用程序如果需要,可以通过接收器接到这样的消息。接收器有两种声明方式:静态接收器和动态接收器。在8.0中,静态接收器被大幅度削弱,因此我们先来看动态接收器。①动态接收器首先在活...原创 2018-10-04 12:38:36 · 504 阅读 · 0 评论 -
《第一行代码》 编写精美的聊天界面
这篇文章主要记录了我在《第一行代码》 编写精美的聊天界面 的一些心得,是对整个第三章的总结。原创 2018-10-03 21:35:50 · 2255 阅读 · 7 评论 -
AndroidUI控件,布局
《第一行代码》第三章内容的整理。第三章主要是控件的开发,布局的理解,是安卓的基础部分。 目录注册监听器4种基本布局:创建自定义控件ListView控件(已被RecyclerView取代)RecyclerView注册监听器一种是声明为内部类,但是Java规定,内部类只能访问外部类中的成员变量,不能访问外部方法中的变量。解决方法是将方法中的变量声明为fin...原创 2018-10-03 19:27:24 · 304 阅读 · 0 评论 -
Android活动(Activity)
一直在学习郭霖老师的《第一行代码》,我整理了第二章的笔记。安卓的activity是安卓的四大组件之首,重要性不言而喻。下面的内容都是很基础的。目录在活动中添加Toast标签 在活动中使用Menu活动的销毁:活动中的穿梭活动的生命周期活动的启动模式首先,没有在AndroidManifest.xml里面注册的活动是不可以使用的,但是AS会帮助你自己注册(前提是你新建的是...原创 2018-10-01 17:05:44 · 459 阅读 · 0 评论 -
Android begin!
这本书买来很久了,我感觉我再不看的话,书的内容就要过时了。于是从2018.9.25开始,我又开始看我看了无数次的第一章。原创 2018-09-25 21:56:34 · 92 阅读 · 0 评论