- 博客(19)
- 收藏
- 关注
原创 《第一行代码》学习笔记:运行时权限
Android现在将所有的权限归成了两类,一类是普通权限,一类是危险权限。准确地讲,其实还有第三类特殊权限,不过这种权限使用得很少。普通权限指的是那些不会直接威胁到用户的安全和隐私的权限,对于这部分权限申请,系统会自动帮我们进行授权,危险权限则表示那些可能会触及用户隐私或者对设备安全性造成影响的权限,如获取设备联系人信息、定位设备的地理位置等,对于这部分权限申请,必须要由用户手动点击授权才可以,否则程序就无法使用相应的功能。Android中所有的危险权限,一共是9组24个权限。每个危险权限都属于一个权限组
2020-07-11 11:05:16 339
原创 《第一行代码》学习笔记:使用LitePal操作数据库
LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和増删改查的操作。LitePal的项目主页上也有详细的使用文档,地址是:https://github.com/LitePalFramework/LitePal 。一、配置LitePal编辑app/build.gradle文件,在dependencies闭包中添加如下内容:(旧版已废弃)注意要点击Sync nowimplem
2020-07-10 12:05:06 519
原创 《第一行代码》学习笔记:SQLite数据库存储
SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,因而特别适合在移动设备上使用。SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务。而SQLite又比一般的数据库要简单得多,它甚至不用设置用户名和密码就可以使用。一、创建数据库Android为了让我们能够更加方便地管理数据库,专门提供了一个SQLiteOpenHelper帮助类,借助这个类就可以非常简单地对数据库进行创建和升级。SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建
2020-07-09 11:41:47 450
原创 《第一行代码》学习笔记:文件存储
文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据。如果使用文件存储的方式来保存一些较为复杂的文本数据,就需要定义一套自己的格式规范,这样可以方便之后将数据从文件中重新解析出来。一、将数据存储到文件中新建一个项目并修改activity_main.xml中的代码,在布局中加入一个EditText,用于输入文本内容。但是在文本输入框中随意输入点什么内容,再按下Back键,这时输
2020-07-07 14:06:59 266
原创 《第一行代码》学习笔记:广播实践——实现强制下线功能
实现强制下线功能的思路只需要在界面上弹出一个对话框,让用户无法进行任何其他操作,必须要点击对话框中的确定按钮,然后回到登录界面即可。一、创建ActivityCollector 类用于管理所有的活动public class ActivityCollector { public static List<Activity> activities = new ArrayList<>(); public static void addActivity(Activity activity
2020-07-06 20:36:00 493
原创 《第一行代码》学习笔记:使用本地广播
使用本地广播很容易引起安全性的问题,比如说我们发送的一些携带关键性数据的广播有可能被其他的应用程序截获,或者其他的程序不停地向我们的广播接收器里发送各种垃圾广播。为了能够简单地解决广播的安全性问题,Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播,这样所有的安全性问题就都不存在了。用法本地广播的用法并不复杂,主要就是使用了一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播接
2020-07-06 13:36:38 250 1
原创 《第一行代码》学习笔记:发送自定义广播
一、发送标准广播先定义一个广播接收器。新建一个MyBroadcastReceiver,代码如下所示:public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_S
2020-07-06 00:21:41 347
原创 《第一行代码》学习笔记:接受系统广播
Android中的广播主要可以分为两种类型:标准广播和有序广播。标准广播 (Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。有序广播 (Ordered broadcasts)则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此
2020-07-05 17:52:07 145
原创 《第一行代码》学习笔记:更强大的滚动控件——RecyclerView(增强版的 ListView)
一、基本用法添加依赖库并编写布局文件想要使用RecyclerView这个控件,首先需要在项目的app/build.gradle中添加相应的依赖库才行,在dependencies 闭包中添加如下内容:implementation 'androidx.recyclerview:recyclerview:1.1.0'**添加完之后记得要点击一下右上角Sync Now来进行同步。**然后修改activity_main.xml中的代码,如下所示:<LinearLayout xmlns:andr
2020-07-02 00:50:54 346
原创 《第一行代码》学习笔记:最常用和最难用的控件——ListView
由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当程序中有大量的数据需要展示的时候,就可以借助ListView来实现。ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。一、简单用法新建一个项目,然后修改activity_main.xml中的代码,如下所示:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l
2020-06-30 18:36:17 324 1
原创 《第一行代码》学习笔记:创建自定义控件
可以看到,我们所用的所有控件都是直接或间接继承自View的,所用的所有布局都是直接或间接继承自ViewGroup的。View是Android中最基本的一种UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是在View的基础之上又添加了各自特有的功能。而ViewGroup则是一种特殊的View,它可以包含很多子View和子ViewGroup,是一个用于放置控件和布局的容器。一、引入布局一般我程序中可能有很多个活动都需要标题栏,如果在每个活动的布局中都编写.
2020-06-30 00:49:54 302
原创 《第一行代码》学习笔记:四种基本布局
如何才能让各个控件都有条不紊地摆放在界面上,而不是乱糟糟的呢?这就需要借助布局来实现了。布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的界面。当然,布局的内部除了放置控件外,也可以放置布局,通过多层布局的嵌套,就能够完成一些比较复杂的界面实现。一、线性布局:LinearLayout这个布局会将它所包含的控件在线性方向上依次排列。用法:令每个Button的长和宽都是wrap_content ,并指定了排列方向是vertical。<LinearLayo
2020-06-29 20:07:33 146
原创 《第一行代码》学习笔记:常用控件的使用方法
一、TextView<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:id="@+id/text_view" android:layout_
2020-06-29 00:20:05 169
原创 《第一行代码》学习笔记:活动实践
一、知晓当前是在哪一个活动创建BaseActivity 类(普通java类)然后让BaseActivity 继承自AppCompatActivity ,并重写onCreate() 方法,如下所示:public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
2020-06-26 19:38:22 176
原创 《第一行代码》学习笔记:活动的启动模式
启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance,可以在AndroidManifest.xml中通过给<activity> 标签内指定android:launchMode 属性来选择启动模式。一、standardstandard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。在standard模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用stand
2020-06-26 19:25:01 167
原创 《第一行代码》学习笔记--活动的生命周期
一、返回栈Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish() 方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。二、活动状态每个活动在其生命周期中最多可能会有4种状态。运行状态当一个活动
2020-06-26 15:52:18 173
原创 《第一行代码》学习笔记:Intent--在活动之间穿梭
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。启动活动创建一个activity,自动生成布局文件。此时AS会在AndroidManifest.xml自动注册这个活动,如果不是主活动,也不需要配置<intent-filter> 标签里的内容一、显示使用intent(一步到位,显示使用)Intent有多个构造函数的重载,其中一个是Intent
2020-06-25 00:48:34 205
原创 《第一行代码》学习笔记:Toast和Menu
一、ToastToast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间(例如游戏魔盒的开启与关闭提醒)让点击这个按钮的时候弹出一个Toast吧。在onCreate() 方法中添加如下代码:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView
2020-06-24 23:18:55 163
原创 FirstActivity--创建加载布局和使用
FirstActivity–创建加载布局和使用1、在app/src/main/res目录→New→Directory,创建layout目录,在其中new布局文件并编辑2、在mainActivity的oncreate加入:setContentView(R.layout.first_layout);用R.layout.first_layout 就可以得到first_layout.xml 布局3、在AndroidManifest文件中注册(默认生成)4、配置主活动在<activity> 标
2020-06-07 11:28:55 645
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人