- 博客(46)
- 资源 (5)
- 收藏
- 关注
原创 Android之WebView用法
除了HTTP通信与 Socket 通信两种主要的网络技术外,在 Android 中还提供了一种加载和显示网页的技术—WebView。这可以让我们去处理一些特殊的需求,比如像微信那样在应用程序里展示网页,或者说使用 WebView 来为 UI界面布局。WebView 的基本使用WebView的使用非常简单,新建一个项目 internet,修改 activity_main.xml 中的代码,加入一个WebView 控件。WebView控件是一个新的控件,用于显示网页,为了可以在 Activity 中获取
2022-01-18 13:00:30 2920
原创 Android之Socket实例
Socket(套接字)是对 TCP/IP 协议的封装和应用,根据底层封装协议的不同,Socket 的类型可以分为流套接字(streamsocket)和数据报套接字(datagramsocket)两种。流套接字将TCP作为端对端协议,提供了一个可信赖的字节流服务;数据报套接字使用 UDP 协议,提供数据打包发送服务,应用程序可以通过它发送最长 64KB 的信息。Socket 的通信模型图如1-1所示。 ...
2022-01-07 14:43:01 2797 1
原创 Android之本地广播的使用
前面我们发送和接收的广播全部属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数据的广播有可能被其他的应用程序截获或者其他的程序不停地向我们的广播接收器里发送各种垃圾广播。 为了能够简单地解决广播的安全性问题,Android 引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播,这样所有的安全性问题就都不存...
2021-12-24 14:56:00 2178
原创 自定义广播实例
我们应该已经学会了通过广播接收者来接收系统广播的内容,但是在实际开发中,仍需要自定义一些广播。下面我们就来讲解如何在应用程序中发送自定义的广播。 发送广播很简单,只需要声明一个意图,然后使用Context.sendBroadcast()方法发送意图即可。这里在布局文件中加入一个 Button 按钮来触发发送广播的事件,activity_main.xml代码如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmln...
2021-12-15 13:06:20 2327
原创 Android之动态注册广播实例
Android内置了很多系统级别的广播,我们可以在应用序中通过监听这些广播来得到各种系统的状态信息,比如手机开机完成后会发出一条广播、电池的电最发生变化会发出一条广播、时间或时区发生改变也会发出一条广播等。想要实现广播的接收,就需要使用广播按收者。广播接收者可以自由地对自己感兴趣的进行注册。当有相应的广播发出时,广播接收者就能够收到该广播。并在内部处理相应的逻辑,注册广播的方式一般有两种,在代码中注册和在 AndroidManifest.xml中注册,其中的前者被称为动态注册,后者被称为静态注册。下面分
2021-12-07 13:17:57 1601
原创 android之广播机制介绍
广播(Broadcast)是一种广泛用于应用程序之间传递消息的机制,是 Android系统的四大组件之一。广播机制包含3 个基本要素∶广播(Broadcast),用于发送广播;广播接收器(BroadcastReceiver),用于接收广播;意图内容(Intent),用于保存广播相关信息的媒介。广播分为两个方面∶广播发送者和广播接收者(Broadcast Receiver),在 Android 系统中很多操作完成以后都会发送广播,比如说发送短信息、打出一个电话、开机或者网络状态改变和电量改变等。如果某些应
2021-12-01 15:54:11 2160
原创 Android之IntentService的使用
通过前面的学习,大家会发现我们在使用 Service 时总会创建一个线程来执行任务,而不是直接在 Service中执行。这是因为 Service 中的程序仍然运行于主线程中,当执行一项耗时操作时,不新建一个线程的话很容易导致 Application Not Responding 错误。当需要与 UI线程进行交互时,使用 Handler 机制来进行处理。为了简化操作,Android提供了IntentService类。IntentService是 Android中提供的后台服务类,是Service 自动实现
2021-11-25 17:34:04 2214
原创 Android之Notification的使用
前台服务一个Service不管是被启动或是被绑定,默认是运行在后台的。有一种特殊的服务叫前台服务,是一种能被用户意识到它存在的服务,默认是不会被系统自动销毁的,但是必须提供一个状态栏Notification,在通知栏放置一个持续的标题。这个Notification 是不能被忽略的,除非服务被停止或从前台删除。这类服务主要用于一些需要用户能意识到它在后台运行并且随时可以操作的业务,如音乐播放器,设置为前台服务,使用一个Notification 显示在通知栏,可以使用户切歌或是暂停之类的。前台服务与普通
2021-11-19 15:22:50 1668
原创 Android之AsyncTask使用实例
AsyncTask 是 Android提供的轻量级的异步类,可以直接继承 AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给 UI主线程。这个类的设计目的很明确,就是为了"执行一个较为耗时的异步任务(最多几秒钟),然后更新界面"。这种需求本可以使用Handler 和 Thread 来实现,但是在单个后台异步处理时显得代码过多、结构过于复杂,因此 Android 提供了AsyncTask类。但是在使用多个后台异步操作并需要进行UI
2021-11-12 16:43:54 2238
原创 Android之Handler机制使用实例
使用 Handler 机制,首先需要创建一个Handler 对象,可以直接使用Handler 无参构造函创建Handler 对象,或者是继承Handler类,重写 handleMessage(Message msg)方法来创建handler对象。Google 官方提供了一个推荐的使用方式,代码如下∶Class LooperThread extends Thread {public Handler mHandler;public void run(){Looper.prepare();m...
2021-11-02 12:32:35 1659
原创 Android 消息处理机制
Android 应用程序启动时,系统会创建一个主线程,负责与UI组件(widget、view)进行交互,比如控制UI 界面显示、更新等;分发事件给UI界面处理,比如按健事件、触摸事件、基绘图事件等,因此,Android 主线程也称为 UI线程。由此可知,UI 线程只能处理一些简单的、短暂的操作,如果要执行繁重的任务或者耗时长的操作,比如访问网络、数据库、下载等,这种单线程模型会导致线程运行性能大大降低其至阻塞UI线程,如果被阻塞超过5秒,系统会提示应用程序无响应,也就是ANR,这会直接导致退出整个应用程
2021-10-31 18:46:36 1244
原创 以 bind 方式创建与绑定 Service实例
通过前面的学习,可以发现使用 start方式开启 Service 非常简单,但是它有一个技大的弊端,没有办法与开启者进行通信。为了解决这个问题,我们一般会使用 bind方式来定 Service。以bind方式创建与绑定 Service 的步骤在之前也已讲述,此处将用一个实例来进行讲解。1、创建一个继承Service 类的子类 MyService类,由于是采用 bind方式绑定Service,因此 MyService 类与前文以start方式开启Service而创建的继承Service 类的子类有很大不.
2021-10-21 17:38:21 1192
原创 Android之Service 介绍
Service(服务)是一个没有用户界面、在后台运行、执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到其他应用场景时,Service 将持续在后台运行。另外,一个组件能够绑定到一个Service与之交互(IPC机制),例如,一个 Service 可能会处理网络操作、播放音乐、操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行的。Service 的分类Service可以通过运行地点和运行类型两种方式来进行分类。按运行地点分
2021-10-21 17:26:31 440
原创 Android之Service的简单实例
通过前面的学习,读者应该对Service有了一个全面的了解,也知道了创建与启动Service的具体步骤与方法。下面将通过实例带领大家一起学习如何使用Service实例:以start方式创建与启动Service通过前面的学习,我们知道了用start方式创建以及使用 Service的4个步骤,下面我们按照这4个步骤来进行讲解。1、创建一个继承 Service 的类 MyService,在类中实现它的几个主要方法,为了验证生命周期的结论,我们在生命周期方法中都加入了Log。同时,为了模拟真实的开发环.
2021-10-14 12:20:07 1132
原创 Android之读取通话记录实例
在Android 中提供了很多系统ContextProvider,通话记录就是其中的一个典型代表。下面我们以读取通话记录为例,展示如何读取系统自带的 ContextProvider 以及动态权限的处理和操作自定义的ContexProvider一样,操作系统的ContextProvider 也是使用ContentResolver 类。本实例中主要是读取通话记录,因此只需调用query()方法,传入URI即可。为了实现读取通话记录的功能,在 Activiy 对应的布局文件 activity_main.xml
2021-09-14 15:13:40 3768
原创 Android之自定义 ContentProvider
在学习了ContentProvider 的几个常用类和如何创建一个内容提供者的方法之后,下面我们用一个实例来进一步加深理解。通过一个完整的实例来展示如何用ContentProvider类进行数据库操作。将通过创建 100条模拟数据,用ListView 展示出来。在进行具体的数据库操作之前,先建立一个Java 实体类 User类,再通过这个实体类进行数据的封装。User类中包括 userId、name、age三个属性,具体代码如下∶package com.rfstar.sqlitetest2;pu
2021-09-02 15:11:24 273
原创 Android之ContentProvider
在Android开发中,有时用户确实需要在应用之间进行数据的交换。我们知道通过指定文件的操作模式为 Context.MODE_WORLD_READABLE或 Context.MODE_WORLD_WRITEABLE同样也可以对外共享数据。但是如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一,比如采用xml文件对外共享数据,需要进行xml解析才能读取数据;采用 sharedpreferences共享数据,需要使用sharedpreferencesAPI读取.
2021-08-27 12:26:17 317
原创 Android之SQLite 操作实例
下面通过一个完整的实例来展示如何进行数据库操作。由于实例中使用的方法在上一篇博文中都已经讲述过,因此不再对具体的方法进行分析,主要通过完整的实例让读者有一个宏观的认知实例将通过创建 100条模拟数据,用ListView 展示出来,同时在ListView中对数据进行删除和更新操作。最后演示如何进行数据库版本更新的操作。在进行具体的数据库操作之前,先建立一个Java 实体类 User类,再通过这个实体类进行数据的封装。User类中包括 userId、name、age三个属性,具体代码如下∶packag
2021-08-13 13:52:54 710
原创 SQLite操作的核心类 SQLiteDatabase 与 SQLiteOpenHelper
在 Android 中,操作SQLite主要依靠SQLiteDatabase与 SQLiteOpenHelper 这两个类,其中 SQLiteDatabase 是用于执行数据库操作的类,SQLiteOpenHelper 是 SQLiteDatabase 的一个帮助类,用来管理数据库的创建和版本的更新。由于 SQLieDatase 对象是通过 SOLiteOpenHelper调用方法来获得的,因此下面先讲解SQLiteOpenHelper 再讲解 SQLiteDatabase。1. SQLiteOpenH
2021-07-26 16:58:42 924
原创 Android之文件存储
利用 SharedPreferences 来保存数据固然有其简单轻便的优势,但是当数据较大时使用 SharedPreferences 就不合适了,此时一般选择使用文件存储。在应用私有文件夹中读写数据在介绍如何在Android 平合下进行文件存储之前有必要了解 Android 平台下的数据存储规则。在其他的操作系统如 Windows 平台下,应用程序可以自由地或者在特定的访问权限基础上访问或修改其他应用程序名下的文件等资源,而在 Android 平台下,一个应用程序中所有的数据都是...
2021-07-22 16:23:50 561 1
原创 android之ViewPager与TabLayout
使用 TabLayout 很容易实现选项卡的功能。这里将结合 ViewPager、Fragment、TabLayout实现一个具有选项卡功能的程序。本例再上篇讲解的ViewPager与Fragment实例上修改,请结合上篇实例参考。要实现这样一个程序,首先需要在布局文件中加入 TabLayout。MainActivity中对应的布局文件代码如下:...
2021-06-18 12:27:14 1038
原创 android中ViewPager 与 Fragment
在实际的开发过程中,ViewPager 与 Fragment 组合使用是比较常见的,而对于 fragment,它所使用的适配器是FragmentPagerAdapter。FragmentPagerAdapter 继承自PagerAdapter类,用于呈现Fragment页面。这些Fragment页面会一直保存在FragmentManager中,以便用户随时取用。这个适配器最好用于有限个静态 fagment页面的管理。尽管不可见的视图有时会被销毁,但用户所有访问过的 fragmemt 都会被保存在内存中。
2021-06-17 11:19:43 1889
原创 android之ViewPager的使用
ViewPager是一个非常强大的 UI组件,应用非常广泛。它提供了多界面切换的效果,具体来说就是∶当前显示一组界面中的一个界面,当用户左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分,滑动结束后,界面自动跳转到当前选择的界面中。下面用实例来说明如何使用。和之前的其他控件一样,使用ViewPager也需要把ViewPager对应的控件加入布局文件中。在MainActivity对应的布局文件中添加 ViewPager 的代码如下∶...
2021-06-11 13:32:44 2121 2
原创 继承 BaseAdapter 自定义 Adapter 来实现 ListView
其实 SimpleAdapter 适配器已经能够满足很多情况了,但是由于它的一些缺陷,实际上在开发中使用最多、最广泛的还是通过继承 BaseAdapter 自定义 Adapter 的方式来实现ListView SimpleAdapter和ArrayAdapter也是继承自 BaseAdapter 的,只是两种已经实现好的 BaseAdapter而已。和 SimpleAdapter 与 ArrayAdapter 一样,自定义 Adapter 需要至少实现 BaseAdapter 的 getCount()、
2021-06-02 17:24:59 989 1
原创 Android之使用 SimpleAdapter 实现 ListView
使用 SimpleAdapter来实现ListView有一定的扩充性,可以实现一定的自定义效果,这种自定义的效果是通过创建 item 样式来实现的。创建一个名为 item_list.xml的 item布局文件,代码如下∶<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:
2021-05-26 13:09:29 847
原创 android之ListView 的使用之用法一
在 Android 开发中 ListView 是非常常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。它以垂直的方式排列其内部 item,其中的 item 可以被定义成各种复杂的界面,一般用于数据集的展示。ListView 在实际中使用的非常多,而且很多人在使用ListView 时遇到的问题非常多,所以有必要单独用一节来讲解 ListView。从上面的描述中可以总结出一个列表显示需要的三个要素∶ 用来展示列表的 View,即 item;用来把数据映射到ListView 的 ite
2021-05-21 18:32:01 257
原创 Android之单选按钮的改变事件
单选按钮的改变事件自然只适用于单选按钮,所以首先要在布局文件中加入一个单选按钮,MainActivity对应的布局文件代码如下∶<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:to
2021-05-20 12:32:00 767
原创 android中下拉列表的选中事件
MainActivity的布局文件代码如下,加入一个表示姓名的下拉列表: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a
2021-05-14 19:06:13 2825
原创 android中的按键事件
按键事件主要在EdTex中使用,用王监听输入的内容。在布局文件中加入一个 EditText。MainActivity对应的布局文件如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android
2021-04-29 14:50:30 604
原创 2021-04-28
长按事件长按事件就是长按了某个控件而触发的事件。TextView、ImageView、Button 等控件经常会使用长按事件。另外,布局管理器(如 LinearLayout)也是可以有长按事件的。下面将以 LinearLayout 为实例来进行讲解。MainActivity对应的布局文件代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/
2021-04-28 13:30:12 97
原创 Android中的事件处理之点击事件
在 Android 的图形界面(UI)开发中,有两个非常重要的内容∶一个是控件的布局,另个就是控件的事件处理。Android中的常用事件有点击事件、长按事件、触摸事件、焦点事件、按键事件—下拉列表的选中事件、单选按钮的改变事性等。对于事件的处理,基本上可以总结为 3 个步骤∶步骤一:获取触发事件的对象,比如点击了一个 Button,如果要对这个点击事件进行处理,就需要获取 Button 的对象。步骤二:实现一个对应的事件处理接口。每个事件都有对应的事件处理接口,在事件处理中必须要实现事件处理接口,.
2021-04-23 16:53:04 2262
原创 android studio之常用基本控件的使用
在Android 开发中,需要使用的控件很多,除了TextView、Button、EditText,还有RadioGroup、CheckBox、Spinner、ImageView 等一大批控件。这些控件构成了 Android图形界面开发的基石。Android 中的控件类都是 android.view.View 类的子类,都在 android.wegdit 包下,除了TextView、Button之外,还有很多控件类。总结起来,Android中常用的控件类所示。控件名称描 述...
2021-04-14 18:53:58 5426
原创 Android studio之布局管理器之间的相互嵌套
在使用布局管理器进行布局时会发现,有时候实际的需求不是一种布局管理器能够满足的,这时我们可以将多个布局管理器嵌套使用。用法和单个布局管理器的使用并无多大区别,这里就以LinearLayout、GridLayout、RelativeLayout 三者的互相嵌套为例,实现一个带标题的计算器的布局。其他嵌套情况可根据实例随意变换,此处不做过多叙述。<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http
2021-04-09 13:46:44 1383
原创 Android studio之GridLayout:网格布局管理器的使用
网格布局管理器是 Android 4.0以后新增加的布局管理器。网格布局管理器将容器划分为行x列的网格,每个控件置于网格中,当然也可以通过设置相关属性使一个控件占据多行或多列.GridLayout 实例及属性详解GridLayout常用属性android:rowCount="4"设置网格布局有4行android:columnCount="4"设置网格布局有4列android:layout_row="1"设置组件位于第2行android:layout_column="2"...
2021-04-08 16:59:47 4108
原创 FrameLayout帧布局管理器的使用
帧布局管理器为容器内的控件创建一块空白区域(帧),一帧一个控件,后面添加的控件覆盖在前面的控件上面,类似于Java AWT中的 CardLayout 布局。例如,在播放器 App 中,播放器上面的按钮就浮动在播放器上面。Framelayout 布局实例<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"andro...
2021-03-31 17:13:30 308
原创 无线惯性动捕模块
功能介绍:X1无线惯性动捕模块,是成都大鸟智能科技推出的一款定制型的动作捕捉方案,基于高性能抗磁的惯性传感器和网络通信方案的结合,实现人体任意运动节点的姿态数据捕捉,具有高精度、低延迟、独立性强等特点。全身模块可以实现互换互用,模块通用,任一模块可设置为对应任一节点。无线惯性动捕模块 成都大鸟智能科技 淘宝店智能梦之队全身模块可以实现互换互用,模块通用,任一模块可设置为对应任一节点。根据实际项目的经验总结,相比于老款模块,新版X1模块优化了整体体积外观,增设了网络连接指示灯、工作指
2021-03-30 13:10:42 277
原创 Android studio之RelativeLayout:相对布局管理器的使用
RelativeLayout∶ 相对布局管理器相对布局管理器内的控件布局总是相对于父容器或兄弟组件的位置,相对布局是实际中应用最多、最灵活的布局管理器。RelativeLayout 实例及属性详解RelativeLayout 布局文件实例∶<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"and...
2021-03-25 15:56:43 797
原创 Android studio之TableLayout:表格布局管理器的用法
表格布局管理器继承自LinearLayout线性布局管理器,用行、列方式来管理容器内的控件,表格布局不需要指定多少行列,布局内每添加一行TableRow 表示添加一行,然后在TableRow添加子控件,容器的列数由包含列数最多的行决定。TableLayout 布局文件实例∶<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/andro
2021-03-24 18:06:50 4246 1
原创 实战项目 -- winform做一个舵机控制上位机
简介:设计舵机控制的上位机和运行在舵机控制板中的下位机代码,实现联动控制舵机。先展示效果:项目开发环境:Visual Studio 2017/ Arduino IDE开发语言:C#/C demo功能:1:设计上位机,使得用户在其界面拖动滑条,可以通过串口发送指令到单片机控制板2:设计单片机控制板中的固件程序,接收上位机发过来的串口指令并解析,根据指令控制舵机运动3:这里单片机控制板采用一块自己设计的arduino板,其他单片机板也可以,主要理解其通信原理。...
2021-03-21 14:53:35 1995
原创 LinerLayout:线性布局管理器
LinerLayout:线性布局管理器线性布局管理器会将容器中的组件一个一个排列,LinerLayout可以通过android:orientation属性控制组件横向或者纵向排列。线性布局中的组件不会自动换行,当组件一个一个排到尽头之后,剩下的组件就不会显示出来了。LinerLayout布局文件实例:<?xml version="1.0" encoding="utf-8"?><LinearLayout ...
2021-03-18 18:24:46 333
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人