
android
强强爱学习
这个作者很懒,什么都没留下…
展开
-
Android开发:表格布局
表格布局继承自线性布局,其本质依旧是线性布局管理器。如果直接向TableLayout中添加组件,则该组件占据一行。向TableLayout中添加行:TableRow列的宽度:取决于该列中最宽的单元格。表格宽度:取决于父容器的宽度。列数:取决于列数最多的行。行为方式有如下3种:(1)shrinkColumns:该列单元格可收缩,以适应父容器的宽度。(2)stretchColumns:改列单元格可拉伸,以填满父容器。(3)collapseColumns:隐藏该列。xml文件<?原创 2020-08-20 15:31:50 · 4246 阅读 · 0 评论 -
Android开发:RecyclerView的点击事件
RecyclerView是Android中对ListView的升级,用来在有限的手机屏幕上展示大量的数据。除了用来展示数据,我们还可以为每个item,甚至每个item内的子控件设置监听器,以实现点击事件。点击事件的实现方式有如下两种。在onCreateViewHolder中注册点击事件RecyclerView并非Android的原生空间,因此需要在build.gradle中添加依赖。其次,在布局文件中添加RecyclerView。<?xml version="1.0" encoding="原创 2020-08-10 23:12:03 · 10999 阅读 · 1 评论 -
Android开发:AlertDialog的使用
AlertDialog可以在当前界面上弹出一个对象框,此对话框置于所有界面上面,且可以屏蔽他们的交互能力。一般用于一些重要的提示内容。AlertDialog不用在布局文件中声明,而是通过代码文件中的构造器来生成并显示。下面的代码展示了AlertDialog的基本使用方法。总结一下,使用AlertDialog的基本步骤。创建一个AlertDialog.Builder()对象。设置title和message等。设置按钮的监听器。调用show()方法显示之。修改按钮颜色的方法调用AlertD原创 2020-08-09 20:24:00 · 541 阅读 · 0 评论 -
Android实例:使用Intent在多个Activity之间传递数据
众所周知,intent可以用于启动Activity。其实在启动的时候,还能通过intent来传递数据,下面就来看一个实例。向下一个Activity传递数据第一个activity的布局文件这里仅仅放置了一个按钮,用于启动第二个Activity。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi原创 2020-08-05 15:38:01 · 1099 阅读 · 0 评论 -
Android实战:使用隐式Intent打开系统浏览器
Intent简介使用Intent可以在Android的各个组件之间交互,如启动Activity, 启动Service,发送广播等。Intent不仅可以指定当前组件想要执行的动作,还可以在不同组件之间传递数据。显式Intent:直接指明跳转到哪个Activity。Intent的构造函数接收两个参数,分别是Context和Activicy::java.class。隐式Intent:指定Intent的Action和和Category。Intent的构造函数接收一个参数,就是Action。AndroidMan原创 2020-08-05 08:12:05 · 2578 阅读 · 0 评论 -
kotlin:集合的函数式API使用
本文注重介绍几个kotlin中内置的几个集合的API,其形参是lambda表达式maxBy()函数本函数接收一个lambda表达式作为形参,根据传入的条件来遍历集合,从而找到该条件下的最大值。比如我们要找到一个字符串组成的集合中长度最大的元素就可以这么写。val list = arrayListOf<String>("Apple", "Banana", "Pear", "Orange")print(list.maxBy { it.length })map()函数本函数接收一个lam原创 2020-08-04 09:49:01 · 329 阅读 · 0 评论 -
Android实例:跟随手指动的小球
创建自定义组件这里创建了自定义组件,并重写了onDraw()和onTouchEvent()方法。前者的功能是绘制一个红色的小球。后者的功能是当点击屏幕事件发生时,更新小球的坐标,并重新绘制。package com.example.mydefineviewimport android.content.Contextimport android.graphics.Canvasimport android.graphics.Colorimport android.graphics.Painti原创 2020-08-03 11:16:18 · 401 阅读 · 0 评论 -
Android:在子线程中更新UI
Android的UI是线程不安全的,因此只能在主线程中更新UI,否则就会出现异常。请看下面的例子。实战:直接在子线程中更新UI会报错布局文件布局文件中只定义了两个空间,分别是TextView和Button。后者的点击事件用于更新前者显示的内容。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and原创 2020-08-02 16:35:42 · 561 阅读 · 0 评论 -
Android:多线程编程
Android多线程编程继承Thread开启子线程最简单的方式就是自定义一个类,继承自Thread,并重写run()方法,在其函数体中编写子线程的逻辑。class ThreadTest:Thread() { override fun run() { super.run() //在这里写子线程的逻辑 println("这是一个子线程!") }}最后调用该类的start()方法即可开启子线程。这里先调用其构造方法实例化,然后调用st原创 2020-08-02 16:07:06 · 130 阅读 · 0 评论 -
Android开发:运行时权限
权限机制程序的开发者往往存在滥用权限的问题,在用户隐私方面存在较大的隐患,严重影响了使用体验。但是由于对APP的依赖性,无法拒绝安装,使用某些APP,因此Android提出了运行时权限。运行时权限用户无需在安装软件时一次性同意所有的权限,而是在软件的使用过程中对某一权限申请进行授权。普通权限:基本不会威胁用户隐私和安全,系统自动授权。危险权限:可能触及用户隐私,如位置信息,联系人信息等,必须由用户手动授权。点击这里查看危险权限列表。实战:申请CALL_PHONEManifest.xml这原创 2020-08-02 09:26:07 · 262 阅读 · 0 评论 -
Android开发:使用SharedPreferences进行持久化存储
不同于文件的直接读写字符串的方式,SharedPreferences使用键值对存储数据。获取SharedPreferences对象想使用SharedPreferences存储数据,首先要获取SharedPreferences对象。有如下两种方式。Context类提供的getSharedPreferences()方法该方法有两个形参,分别是文件名和打开方式。Activity类提供的getSharedPreferences()方法该方法只有一个形参,就是打开方式,文件名默认是当前Activity的原创 2020-07-25 10:49:31 · 261 阅读 · 0 评论 -
Android开发:文件存储
这个程序只有一个Activity, Activity中只有一个Edittext。实现的功能是在Activity销毁之前将EditText的内容存储到一个文件中,在Activity创建的时候,从该文件中读取内容并写道EditText中。代码如下,在onCreate加载数据,在onDestroy中保存数据。MainActivity.ktpackage com.example.filetestimport android.content.Contextimport androidx.appcompat.原创 2020-07-25 10:07:29 · 230 阅读 · 0 评论 -
Kotlin:静态方法
静态方法在其他高级语言(如C++,Java)中也叫类方法。静态方法在调用时无需创建实例,通过类名.方法名的方式调用。在java中调用静态方法的只需在声明前面加关键字static即可。而kotlin中却比较复杂,下面看看几种常见的应用场景。工具类工具类没有比较实例化,因此非常适合用静态方法实现。在kotlin中使用单例类实现类似的功能:object Util{ fun function(){ println("这是一个工具类") }}实际上这里的function并原创 2020-07-19 10:57:58 · 5205 阅读 · 0 评论 -
Kotlin标准函数
kotlin在Standand.kt中定义了一些标准函数,方便程序员调用。letlet函数的参数是一个lambda表达式,其调用格式如下:obj1.let{obj2 -> 语句块}这里的obj与obj2实际上是同一个对象,写的不一样是为了避免重名。let函数最常见的应用时辅助判空。请看下面的例子fun doStudy(study:Study){ study.read() study.write()}此处doStudy是一个函数,接收一个Study类型的参数,其函数体也很简单,原创 2020-06-17 21:08:10 · 338 阅读 · 0 评论 -
Kotlin语法总结
变量变量是一门编程语言最基础和重要的功能,kotlin的变量定义很有特色。自动推导类型。C++,java等高级语言在声明变量的时候需要指明变量类型,如int value = 0;。但是kotlin拥有出色的类型推导机制,在变量声明并初始化的时候,可以根据初始化值的不同,自动推导出变量类型,如//整型变量val num1 = 0//浮点数val num2 = 0.0//字符串val str = "Hello world!"显式声明变量类型。当变量声明但不初始化的时候,编译器无法自动原创 2020-06-15 17:50:46 · 678 阅读 · 0 评论