Android使用系统相机进行拍照
前言我们在日常的开发中有时候会遇到需要用到相机的需求,而相机也是很常用的东西,例如扫二维码啊拍照上传啊等等。这里我不讲像qq那样自定义很强的拍照功能(事实上我也不会),讲个最简单的调用系统相机拍照并储存
调用系统相机步骤这里我通过一个简单的例子来讲这个内容。我自己写了一个demo,布局很简单:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="take phone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.281"
app:layout_constraintStart_toStartO ...
Activity生命周期简析
前言Activity作为安卓四大组件之一,平常我们接触得最多得也是activity,所以很有必要详细了解一下他的详细生命周期。这篇文章定位是有一点安卓基础的,所以还完全不了解的可以先去学习一下activity。这篇文章主要是讲活动的生命周期。活动的生命周期,人有胎儿期,青春期,老年期一样,活动同样有他的各种生命状态。我们出生会哭,进入成年期会有成人礼。活动也一样,每进入一个状态都会回调相应的方法。对于我们来说,活动周期就是活动会在活动具体哪个时候会回调哪一些方法,然后我们可以重写这一些方法,来实现我们的功能。所以我们得具体了解究竟什么时候调用什么方法。例如在onCreate方法中初始化,在destroy中释放内存等等。那接下来就看看他的具体生命周期。
活动的状态首先得了解一下活动的状态。我个人的理解把活动分为四个状态:后台状态,暂停状态,运行状态和销毁状态。
停止状态:这个状态表示活动未进入前台,我们看不到也无法交汇。切换界面活动都会在后台。如果内存紧张的话有可能被回收。就像我们有时候打游戏切换到微信回了一下信息,回来的时候卧槽怎么把我游戏退了,就是这样。
运行状态:这个不用多讲, ...
启动页白屏解决方案
当我们打开app的时候是不是会有一瞬间的白屏然后再进入主活动,虽然这并不会造成什么不好的后果,但是感觉用户体验就不是很好。像网易云音乐等等,打开一瞬间就显示了他们的loge,无缝衔接,没有白屏,怎么做到的呢?
一开始我的思路是这样的。可能是因为我们的主活动逻辑太多,所以加载会变慢,导致显示白屏。如果使用一个只显示一张本地图片的活动,那会不会就不会显示白屏了呢。话不多说我们尝试一下:
Activity中的代码:
/**
* 启动页,显示倾旅的logo,停顿2秒后跳转
*/
public class LunchActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lunch);
//开启子线程进行停顿。如果在主线程停顿的话,会造成主页面卡死 ...
LitePal的使用
前言数据库操作一直都是比较繁琐而且单一的东西,平时开发中数据库也很常见。有学过mysql的读者可能会觉得sql语句确实让人很难受。同样android中,虽然有内置数据库SQLite,但是操作起来还是非常的不方便。跟网络请求类似,当我们用原生的HttpURLConnection请求数据再用json解析,过程很繁琐,所以我们一般是封装成一个工具类,但是retrofit出现了,他帮我们解决了网络请求和解析数据的封装,同时还支持RxJava的异步,十分强大。不了解retrofit的读者也建议你们去学习一下retrofit确实非常好用。LitePal也是同样的道理,把创建数据库和增删查改等等操作都封装起来,所以我们用起来会非常的方便。同时还支持异步操作,不需要我们自己去开启子线程,代码非常的整洁,简单。那接下来就来看看这个神奇的框架LitePal。
简述映射LitePal是采用映射的方式来把数据存储在数据库中的,和GSON的道理是一样的。例如我们现在有一个类,这个类必须是javaBean类:
public class Student extends LitePalSupport {
pr ...
调用系统相册选择照片
前言在相册里选择图片上传也是很常见的功能了例如微信朋友圈等等。但是他们是自定义的选择器,可以选择多张图片并修改。这里我们讲一个最简单的:调用系统的相册选择一张图片并展示。另外有的读者还想到要通过相机拍照来选择图片的功能,也可以参考一下我的另一篇文章Android使用系统相机进行拍照
使用步骤这里我是通过一个简单的demo来讲解怎么去实现这个功能。首先看布局:
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginEnd="52dp"
android:layout_marginRight="52dp"
android:text="choose"
app:layout_constraintE ...
Java的Serializable与Android的Parcelable序列化简析
关于序列化这篇文章主要来讲一下在安卓中关于序列化的问题。首先了解一个问题:什么是序列化?为什么要用到序列化?
什么是序列化:序列化就是就是把一个对象变成可传输的二进制流,可以进行传输。
什么是反序列化:与序列化对应,反序列化就是把一个二进制流转化成对象。
哪里用到序列化:上面说到序列化就是把对象变得可传输;例如在内存,或者网络中传输数据的时候,就得把一个对象变成二进制流可以进行传输。除此之外,在各种通信中,例如进程间通信,文件读取写入等等都要用到序列化。涉及到数据传输,就得使用序列化。因为只有二进制流才可以进行传输。
我们在那些地方会遇到序列化:我们会发现,仅有基本数据类型可以自动进行序列化,但是我的自定义对象并不可以进行序列化。在哪里可以体现呢?当我们从一个Activity向另外一个Activity传递数据的时候,通过Intent,我们会发现只能放基本数据类型。
怎么让自定义的对象可序列化:就是我们要讲的Serializable和Parcelable接口。这两个接口就可以让我们的自定义对象可序列化。
那这两个接口怎么使用?他们有什么区别?这就是接下来我要讲的。
Serial ...
json数据与String的互相转换
json数据本质上也是字符串,所以他们之间的转换也是比较容易的,记住方法和需要注意的事项就行了。
字符串转json在构造json的对象时候把string对象传进去即可。看例子
String data = "{
"result":"success",
"message":null
}";
try {
JSONObject jsonObect = new JSONObject(data);
} catch (JSONException e){
e.printStackTrace();
} catch(NullPointerException e){
e.printStackTrace();
}
这里建立jsonObject对象的时候因为不确定该字符串是否符合json规范,如果不符合规范就会抛出JSONException异常,而如果该字符串是null的时候就会抛出空指针异常。这里也可以判断一下字符串是否为空防止空指针异常。
json数据转字符串这个就比较容易了,直接调用jsonObject对象的toString方法即可。看代码
//这里的js ...