Android
文章平均质量分 58
Deniro Lee
这个作者很懒,什么都没留下…
展开
-
说说在 Android 中如何不使用 findViewById() 来获取资源对象
1 安装在 build.grade 中加入以下配置1:apply plugin: 'kotlin-android-extensions'点击 “Sync Now” 进行安装:2 使用在 Activity 类中导入 import kotlinx.android.synthetic.main.first_layout.*。然后就可以直接使用资源 ID 来引用对象了:资源 ID 是定义在 layout.xml 类型的文件中: <Button android:id="原创 2021-12-05 20:16:14 · 688 阅读 · 0 评论 -
Android Studio 执行 Kotlin 抛出 com.android.builder.errors.EvalIssueException 问题的解决方法
异常具体信息:Caused by: com.android.builder.errors.EvalIssueException: Android Gradle plugin requires Java 11 to run. Youare currently using Java 1.8.You can try some of the following options: - changing the IDE settings. - changing the JAVA_HOME environm原创 2021-12-04 19:17:50 · 12997 阅读 · 0 评论 -
说说在 Android 中如何解析 XML
网络上传输数据有两种格式:XML 与 JSON。JSON 暂且按下不表,我们先说说如何解析 XML。1 搭建 Web 服务器假设我们使用 Apache HTTP Server 搭建好了 Web 服务器(搭建过程请看 这里)。我们在 “Apache HTTP Server 安装目录/htdocs” 下,放置一个 XML 文件,文件内容如下:&lt;?xml version="...原创 2018-06-10 15:29:18 · 339 阅读 · 0 评论 -
说说在 Android 如何使用服务(Service)
Android 服务(Service)适合执行那些不需要和用户交互而且还要求长期运行的任务。 服务的运行不依赖于任何用户界面,即使 APP 被切换到后台,或者打开了另外一个 APP,服务仍然能够保持正常运行。但是当某个 APP 进程被杀掉时,那么这个 APP 所创建的所有服务也就停止咯。另外,服务本身并不会自动开启线程,服务代码默认是运行在主线程中的。所以如果需要执行的业务逻辑耗时长,...原创 2018-06-24 15:43:59 · 7542 阅读 · 1 评论 -
Android 发送 HTTP 请求最佳实践
发送 HTTP 请求的方法其实都有一套固定的模板,所以我们可以把这些方法整合到一个工具类中。public class HttpUtils { /** * 发送 URL 请求 * * @param url * @return */ public static String request(String url) { ...原创 2018-06-16 12:30:17 · 535 阅读 · 0 评论 -
说说在 Android 中如何解析 JSON
JSON 的相对 XML 来说,语义性较差,但它的体积更小,所以在传输时更省流量。假设在 HTTP 服务器中返回以下内容的 JSON 格式数据:[ { "fengxiang": "南风", "fengli": "3-4级", "high": "高温 32℃", "type": "原创 2018-06-16 10:37:59 · 441 阅读 · 0 评论 -
说说在 Android 中如何发送 HTTP 请求
客户端会向服务器发出一条 HTTP 请求,服务器收到请求后会返回一些数据给客户端,然后客户端再对这些数据进行解析与处理。1 HttpURLConnection可以使用 HttpURLConnection(官方推荐) 来发送 HTTP 请求。布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout x...原创 2018-06-09 11:18:12 · 15306 阅读 · 2 评论 -
说说 Android 中 WebView 的基本用法
有时候,需要在应用程序中展示一些网页,Android 提供了 WebView 控件,它可以在程序中嵌入一个浏览器,这样就可以展示各种各样的网页啦 O(∩_∩)O哈哈~布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/ap...原创 2018-06-09 09:50:14 · 447 阅读 · 0 评论 -
说说 Android 中如何操作音频与视频文件
1 音频在 Android 中播放音频文件用的是 MediaPlayer 类,它提供了一些较为常用的控制方法。 方法 说明 setDataSource() 指定音频文件位置。 prepare() 准备播放之前完成准备工作。 start() 开始或继续播放音频。 pause() 暂停播放音频。 reset() 将 M...原创 2018-06-03 14:08:04 · 929 阅读 · 0 评论 -
说说在 Android 中如何压缩图片
目前存在两种压缩图片方式: * 质量压缩 - 不改变图片尺寸。 * 按比例压缩 - 相当于是在像素上进行压缩。而图片有三种存在形式: * file - 磁盘。 * stream - 网络传输、内存。 * bitmap - 内存。bigmap 在内存中的大小是按像素计算的,也就是width * height,所以如果需要在 Android 中显示照片,那么就必须进行按比例压缩,避免...原创 2018-05-26 19:30:08 · 551 阅读 · 0 评论 -
说说 Android 中如何使用摄像头和相册
很多 APP 应用都有用户头像功能,用户既可以调用摄像头马上拍一张美美的自拍,也可以打开相册选取一张心仪的照片作为头像。1 调用摄像头布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi...原创 2018-05-26 15:53:38 · 728 阅读 · 0 评论 -
Android 抛出 No field mAssets in class Landroid/content/res/MiuiResourcesImpl 问题的解决方法
Android Studio 中把开发版的 APP 安装到小米手机时,抛出 NoSuchFieldException: No field mAssets in class Landroid/content/res/MiuiResourcesImpl 异常。解决方法:Android Studio → File → Invalidate Caches / Restart是不是很简单呀 O(...原创 2018-05-26 10:27:32 · 4478 阅读 · 0 评论 -
说说 Android 的运行时权限
在 Android 6.0+ 版本中,首次引入了运行时权限机制,从而更好地保护了用户的安全与隐私。1 权限机制在 Android 6.0 之前的版本中,我们可以在 AndroidManifest.xml 中加入权限声明,形如:<uses-permission android:name="android.permission.GET_ACCOUNTS" /><...原创 2018-04-29 15:35:17 · 711 阅读 · 0 评论 -
说说在 Android 中如何实现多线程编程
当我们执行一些耗时操作,比如发起一条网络请求时,考虑到网速等其他因素,服务器未必会立刻响应我们的请求,那么久必须将这类操作放在子线程中运行,这就需要实现多线程编程。1 启动线程Android 多线程编程与 Java 多线程编程语法相同,因为就是 Android 就是基于 Java 语言的嘛 O(∩_∩)O哈哈~1.1 继承 Thread 类新建一个类继承自 Thread,然...原创 2018-06-18 15:16:57 · 624 阅读 · 0 评论 -
说说 Android 服务的生命周期
每次调用 startService(),onStartCommand() 都会执行。每个服务只会存在一个实例。调用 bindService() 之后,只要调用方和服务之间的连接没有断开,服务就会一直保持运行状态。如果对一个服务,即调用了 startService() 又调用了 bindService(),那么就必须调用 stopService() 与 unbindService() 方...原创 2018-06-30 16:13:20 · 427 阅读 · 0 评论 -
说说 Android 服务的高级技巧
1 前台服务因为服务的优先级较低,所以当系统内存不足时,可能会回收正在后台运行的服务。如果若要避免服务被回收,可以使用前台服务。前台服务会一直有一个图标在系统的状态栏中显示,下拉状态栏可以看到更加详细的信息,类似于消息通知效果。public class FirstService extends Service { private static final String T...原创 2018-06-30 20:18:16 · 372 阅读 · 0 评论 -
说说如何使用 Android 中的 Intent 来传递类对象
使用 Intent 来传递对象有两种方式:Serializable 和 Parcelable。1 Serializable 方式假设有一个 POJO 的 Account 类,该类实现了 Serializable 接口:public class Account implements Serializable { //姓名 private String name; ...原创 2018-11-03 18:50:14 · 1027 阅读 · 0 评论 -
Failed to resolve:com.android.support:appcompat-v7:27.+ 问题的解决方法
新建一个项目,出现 Failed to resolve:com.android.support:appcompat-v7:27.+ 问题:1 分析android studio 中的编译器版本与 build.gradle(app 下)不对应造成的。打开 build.gradle 可以看到错误的编译器版本已被划上了红色波浪线:2 解决我们可以在 Project Structure → a...原创 2018-11-03 10:20:17 · 1038 阅读 · 0 评论 -
说说在 Android 如何在全局获取 Context
Android 提供了一个 Application 类,每当应用启动时,系统就会初始化该类。我们可以定制一个基础的 Application 类,以便管理应用内的一些全局信息。定义 BaseApplication:public class BaseApplication extends Application { private static Context context; ...原创 2018-11-03 09:31:02 · 579 阅读 · 0 评论 -
说说 Android 的 Material Design 设计(五)——可折叠式标题栏
1 CollapsingToolbarLayout 布局CollapsingToolbarLayout 是基于 Toolbar 的布局。它可以让 Toolbar 的效果变得更加华丽。**注意:**CollapsingToolbarLayout 只能作为 AppBarLayout 的直接子布局。现在我们创建一个空活动来显示猫的详情:然后在 activity_cat.xml 中编写界面布局,...原创 2018-10-20 21:36:12 · 561 阅读 · 0 评论 -
说说在 Android 的 RecyclerView 中如何实现下拉刷新
1 SwipeRefreshLayout修改布局文件,新增 SwipeRefreshLayout :<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" ...原创 2018-10-20 16:16:35 · 790 阅读 · 0 评论 -
说说 Android 的 Material Design 设计(四)——卡片式布局
我们使用 CardView 与 RecyclerView 来·实现一个各种猫的卡片式展示列表吧O(∩_∩)O~1 CardView 控件1.1 引入依赖库打开 app/build.gradle,添加依赖库:dependencies { ... compile 'com.android.support:recyclerview-v7:24.2.1' compile ...原创 2018-09-22 19:58:41 · 5876 阅读 · 0 评论 -
说说 Android 的 Material Design 设计(三)——悬浮按钮与交互式提示栏
Material Design 的设计理念是应用程序的界面应该是有立体效果的,立体效果最具代表性的就是悬浮按钮啦O(∩_∩)O~1 悬浮按钮(FloatingActionButton)FloatingActionButton 是 Design Support 库中提供的控件,使用它就可以实现悬浮按钮效果。在 drawable 目录下新增一张图标(tip.png),然后修改布局文件:...原创 2018-09-09 14:17:48 · 867 阅读 · 0 评论 -
说说 Android 的 Material Design 设计(二)——滑动菜单
滑动菜单指的是:菜单项在初始状态下是隐藏的,用户可以通过滑动的方式将菜单显示出来。1 DrawerLayout 布局在此支持放入两个子控件,第一个是主屏幕显示的内容;第二个是滑动菜单显示的内容。布局文件:<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayou...原创 2018-08-27 14:42:24 · 598 阅读 · 0 评论 -
说说 Android 酷炫的 Material Design 设计(一)——Toolbar(工具栏)
Material Design 是由 Google 推出的全新的设计语言,谷歌希望它能够为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。Design Support 库封装了 Material Design 中最具代表性的一些控件和效果,我们可以利用该库实现酷炫的 Material Design 设计。让我们从 Toolbar(工具栏)开始说起吧O(∩_∩)O哈哈...原创 2018-08-12 14:52:29 · 2150 阅读 · 0 评论 -
说说在 Android 如何实现基于位置的服务(基于百度 API)
基于位置的服务简称 LBS(Location Based Service),它是利用无线电通讯网络或 GPS 定位方式来确定出移动设备所在的位置。利用定位服务,可以开发出许多丰富多彩的功能。比如天气预报 APP,可以根据用户所在的位置自动选择所在城市。约会时,可以通过微信发出碰头地点,让朋友们能够尽快过来等等。确定出用户所在的位置。通常有两种技术: 技术 说明 优点 ...原创 2018-08-05 15:51:37 · 489 阅读 · 0 评论 -
说说如何使用 Android 服务下载文件(支持断点续传)
1 添加网络库在 build.gradle 中添加 okhttp3 库:compile 'com.squareup.okhttp3:okhttp:3.10.0'2 定义监听器定义下载监听器,监听下载过程中的各种情况:public interface DownloadListener { /** * 当前下载进度 * * @p...原创 2018-07-14 21:10:26 · 1901 阅读 · 0 评论 -
说说 Android 中的通知(Notification)
当应用程序不在前台运行,这时就可以借助通知( Notification )向用户发送一些提示消息。 发出通知后,手机最上方的状态栏中就会显示一个通知图标,下拉状态栏就会看到通知的详情。1 基本用法//获取系统通知服务NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_S...原创 2018-05-20 13:23:24 · 10339 阅读 · 0 评论 -
说说如何把 Android 项目安装到手机中
首先我们必须开启手机中的【USB 调试】 * Android 4.2 之前: 设置 → 开发者选项界面 → 打开 USB 调试。 * Android 4.2 +: 设置 → 关于手机 → 连续点击版本号(在设置中出现开发者选项),然后再按照之前的方法打开 USB 调试。如果是小米手机,请看 这里 打开 USB 调试。在 Android Studio 中运行项目,就会看到真实的手机设备...原创 2018-05-19 10:28:34 · 3335 阅读 · 0 评论 -
说说在 Android 中如何自定义内容提供器
1 自定义内容提供器首先新建一个继承自 ContentProvider 的类,实现它的 6 个抽象方法: 方法 说明 public boolean onCreate() 初始化时被调用,只有 ContentResolver 尝试访问我们 APP 的程序数据时才会执行初始化操作;在此完成创建与升级数据库的操作,返回 true 表示初始化成功。 public ...原创 2018-05-06 15:00:03 · 462 阅读 · 0 评论 -
说说在 Android 中如何接收系统广播
Android 中内置了很多系统级别的广播,我们可以在应用程序中通过监听这些广播来得到各种系统的状态信息。比如手机开机完成后发出一条广播,电池的电量发生变化后发出一条广播,时间或时区发生改变发出一条广播等等。如果想要接收到这些广播,就需要使用到广播接收器。注册广播的方式有两种,在代码中注册(动态注册)和在 AndroidManifest.xml 中注册(静态注册)。1 动态注册创...原创 2018-03-01 15:16:10 · 3230 阅读 · 0 评论 -
说说如何使用 Android UI 设计聊天界面
1 制作 Nine-Patch 图片Nine-Patch 图片是一种被特殊处理的 png 图片,它能够指定哪些区域可以被拉伸而哪些区域不可以。 先准备一张气泡样式的图片 message_left.png:我们把这张图片设置为 LinearLayout 的背景图片:<?xml version="1.0" encoding="utf-8"?><LinearL...原创 2018-02-21 17:12:49 · 805 阅读 · 0 评论 -
Android 使用 Gradle 构建时,出现 Crunching Cruncher xxx.9.png failed 问题的解决方法
制作了 Nine-Patch 图片之后,重新使用 Gradle 构建时,出现:Crunching Cruncher xxx.9.png failed 错误。出现这个问题之后,活动类的 R (Cannot resolve symbol ‘R’)也会找不到的哦。1 分析制作的 9-Patch 图片不规范,导致 Gradle 构建失败。2 解决使用 Android Studio 2....原创 2018-02-21 11:39:48 · 580 阅读 · 0 评论 -
说说 Android UI 的滚动控件(RecyclerView)
ListView 由于其强大的功能,在过去的 Andorid 开发中使用非常广泛。不过 ListView 需要优化来提升运行效率,就像我们之前所优化的那样,否则性能将很差。还有就是只能够纵向滚动,如果要想实现横向移动,用 ListView 是做不到的。RecyclerView 可以说是一个增强版的 ListView 。它不仅实现了和 ListView 同样的效果,而且还优化了 ListView...原创 2018-02-20 14:49:32 · 414 阅读 · 0 评论 -
说说 Android UI 中的 ListView(列表控件)
当程序中有大量的数据需要展示时,就需要用到 ListView 啦。ListView 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。1 基本用法布局文件中加入 ListView:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="h...原创 2018-02-19 21:29:18 · 4701 阅读 · 1 评论 -
说说如何自定义 Android 的 UI 控件
所有控件都是直接或间接继承自 View 的,所有布局都是直接或间接继承自 ViewGroup 的。View 是 Android 中一种最基础的 UI 组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域中的各种事件。而 ViewGroup 则是一种特殊的 View,它可以包含很多的子 View和子 ViewGroup,是一种可用于放置控件和布局的容器。 1 引入布局我们来创建...原创 2018-02-19 21:26:15 · 910 阅读 · 4 评论 -
说说 Android 的 UI 布局
布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出漂亮的界面。当然,布局的内部除了放置控件外,也可以放置布局,通过多层布局的嵌套,我们就能够实现一些比较复杂的界面咯O(∩_∩)O~1 线性布局(LinearLayout )线性布局会将它所包含的所有控件放在线性方向上依次排列。我们来实践一下,布局文件:<?xml version="1...原创 2018-02-19 21:23:39 · 491 阅读 · 0 评论 -
说说 Android 的常见 UI 控件
这些控件都有一些共有属性,让我们来看看吧: 共有属性 说明 android:id 唯一标识符 android:layout_width 宽度 android:layout_height 高度 android:visibility visible:可见;invisible:不可见,但仍然占据原来的屏幕空间;gone:不可见,也不会占据...原创 2018-02-19 21:17:08 · 530 阅读 · 0 评论 -
说说 Android 的广播机制
Android 中的每一个应用程序都可以对自己感兴趣的广播进行注册,程序只会接收自己所关心的广播内容,这些广播可能是来自于系统,也可能是来自与其他应用程序。Android 中的广播分为两种类型:标准广播和有序广播。标准广播(Normal broadcasts)标准广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何...原创 2018-02-28 15:31:52 · 283 阅读 · 0 评论 -
说说 Android 的活动组件(Activity)
Android 的活动是可以包含用户界面的组件,主要用于与用户进行交互。1 手动创建活动手动创建活动可以加深对活动的理解,所以这里我们手动创建一个活动。1.1 创建空的活动在 Android Studio 中新建一个新项目,模板选择 “Add No Activity”:右击 “域名.应用名” 的包,New→Activity→Empty Activity,创建一个空的...原创 2018-02-17 13:23:57 · 1171 阅读 · 1 评论