第二行代码
Andoroid学习
有意识的呼吸
CSDN就是个笔记本。
展开
-
android自动化 常用 手势和api
一、手势from appium.webdriver.common.touch_action import TouchAction1、轻敲快速按下并抬起,对元素或坐标使用TouchAction(driver).tap(element=元素, x=X, y=Y).perform场所:开关通知栏开关2、按住/抬起一直按住TouchAction(driver).press(el=元素, x=X, y=Y).perform()抬起TouchAction(driver).release().p原创 2020-08-12 00:46:44 · 319 阅读 · 0 评论 -
UIAutomatorViewer基础
1、目录进入SDK文件夹,在tools/bin下的uiautomatorviewer.bat原创 2020-08-12 00:12:17 · 6907 阅读 · 4 评论 -
appnium基础
1、联结代码from appium import webdriverdesired_caps = { 'platformName' : 'Android', 'platformVersion' : '10', 'deviceName' : 'Android Emulator', # 'appPackage' : 'com.android.contacts', # 'appActivity' : '.activities.PeopleActivity',}原创 2020-08-11 17:12:23 · 262 阅读 · 0 评论 -
ADB基础
adb构成和工作原理adb构成client端,在电脑上,负责发送adb命令daemon守护进程,在手机上,负责接收和执行adb命令server端,在电脑上,负责管理client和daemon之间的通信adb工作原理client端将命令发送给server端server端会将命令发送给daemon端daemon端进行执行将执行结果,返回给server端server端将结果再返回给client端adb获取包名和界面名包名和界面名的概念包名,对应着应用程序界面名,对转载 2020-07-29 16:19:16 · 185 阅读 · 1 评论 -
Android实战(四)——正能量日报
太久没写Android了,今天有同学布置了这个题目,花了一上午的时间做了做:要求:1)围绕疫情背景下某一主题,要体现正能量2)实现首页(app着陆页),可包含app标题、背景图等;需支持横屏显示不同布局3)实现列表Activity,其包含10项以上内容,每项显示缩略图与标题文字;需支持屏幕上下滚动4)实现详情Activity,其包含每条内容的介绍详情,包括图片与文字5)点击首页进入列...原创 2020-04-27 17:09:11 · 463 阅读 · 1 评论 -
Android小技巧 自动关闭输入法软键盘
一、简介作用:获取编辑框的最大长度,当输入后文本长度等于最大长度则关闭软键盘。使用场景:手机号,固定位数的密码,验证码二、代码部分工具类 ViewUtil.javapublic class ViewUtil { // 获取编辑框的最大长度,通过反射机制调用隐藏方法 public static int getMaxLength(EditText et) { ...原创 2020-04-08 14:45:43 · 1360 阅读 · 1 评论 -
Android实战(二)—— 房贷计算器
知识点:下拉框Spinner的学习。public class MainActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener, CompoundButton.OnCheckedChangeListener {...... ini...原创 2020-03-07 02:04:26 · 2469 阅读 · 1 评论 -
Android实战(一)—— 简单计算器
核心思想:监听按钮的onClick():获取按下的按钮上的String然后对数字、小数点、运算符、根号、等号、C、CE、做出不同的响应每次运算都要进行刷新操作数和运算符,设置计算框的操作public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Te...原创 2020-03-05 16:21:49 · 485 阅读 · 1 评论 -
Android生成正式签名的APK文件
一、默认生成的签名Android要求只有签名后的APK文件才能安装。通过 Android Studio 来运行程序会有默认的 keystore 文件自动帮我们签名。点击右侧工具栏Gradle → 项目名 → :app → Tasks → android → singingReport可以看到Android Studio 运行的程序都是使用了debug.keystore文件进行签名。不过这...原创 2020-02-27 11:39:09 · 476 阅读 · 0 评论 -
《第二行代码》—— 酷欧天气的开发
使用的教材是国@郭霖写的《第二行代码》应用名:Cool Weather一、功能需求及技术可行性分析1、具备的功能可以罗列出全国所有的省市县可以查看全国任意城市的天气信息可以自由地切换城市,去查看其他城市地天气提供手动更新以及后台自动更新天气的功能2、技术可行性分析如何获取全国省市县的信息:天气数据:和风天气的数据接口省市县数据:http://guolin.tech...原创 2020-02-27 02:25:20 · 1609 阅读 · 8 评论 -
Android开发技巧 (五) —— Lambda表达式
Lambda表达式本质是一种匿名方法,它既没有方法名,也没有访问修饰符和返回值类型,用它来写代码更简洁,更易懂。Lambda是Java8的新特性,所以要在app/build.gardle中添加:android {...... compileOptions{ sourceCompatibility JavaVersion.VERSION_1_8 targ...原创 2020-02-23 19:55:11 · 639 阅读 · 0 评论 -
Android开发技巧 (四) —— 多窗口模式
一、进入多窗口模式二、多窗口模式下的生命周期新建一个空项目day23_ispf多窗口模式并不会改变原有活动的生命周期,只是会将最近交互过的那个活动设置为运行状态,另一个可见的活动设置为暂停态修改主活动:public class MainActivity extends AppCompatActivity { private static final String TAG ...原创 2020-02-23 12:32:25 · 1291 阅读 · 0 评论 -
Android开发技巧(三)—— 创建定时任务
每种手机都有自己的休眠策略,Android手机在长时间不操作时会自动让CPU进入睡眠状态,这就导致JAVA原生Timer的定时任务无法运行。所以我们需要借助Alarm唤醒CPU一、Alarm机制Alarm借助了AlermManager类,这个类和NotificationManger类似。通过调用Context的getSystemService(),来获取实例,不过这里要传入Context.....原创 2020-02-23 01:30:39 · 4038 阅读 · 0 评论 -
Android开发技巧(二)—— 自定义日志工具 和 调试
一、自定义日志工具比level大的日志都不会显示,让level等于Nothing那么所有的日志都不会显示,开发和上线都不耽搁import android.util.Log;public class LogUtil { public static final int VERBOSE = 1; public static final int DEBUG = 2; pub...原创 2020-02-22 16:33:12 · 394 阅读 · 0 评论 -
Android开发技巧(一)——获取Context 和 Intent传递数据
一、全局获取ContextAndroid提供了一个Application类,每当程序启动的时候就会自动将这个类初始化。定制一个自己的Application类,以便于管理程序内一些全局的状态信息,比如全局Context。MyApplication.javapublic class MyApplication extends Application { private static C...原创 2020-02-22 15:41:49 · 3048 阅读 · 0 评论 -
Material Design学习(四)——下拉刷新、可折叠标题栏、融合状态栏
继续使用上篇文章的项目,拷贝一份并改名为day21_SwipeRefresh一、下拉刷新SwipeRefresh 是用于刷新功能的核心类,将想要实现刷新功能的控件放置到SwipeRefreshLayout中即可比如我们要刷新RecycleclerView:先引入...原创 2020-02-22 00:09:12 · 541 阅读 · 1 评论 -
Material Design学习(四)——卡片式布局
继续使用上篇文章的项目,拷贝一份并改名为day20_CardView一、CardViewCardView也是FrameLayout的一种,不过提供了额外的圆角和阴影等效果1、添加依赖 implementation 'androidx.recyclerview:recyclerview:1.1.0' // 瀑布布局 implementation 'androidx.card...原创 2020-02-21 01:25:54 · 556 阅读 · 0 评论 -
Material Design学习(三)——悬浮按钮和可交互提示
继续使用上篇文章的项目,拷贝一份并改名为day20_SuspendButton一、FloatingButton主布局:<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.appcompat.widget.T...原创 2020-02-20 21:01:48 · 366 阅读 · 0 评论 -
Material Design学习(二)——滑动菜单
拷贝一份昨天的项目,并改名day20_SlidingMenu一、DrawerLayoutDrawerLayout 是个布局,可以放入两个子控件。第一个子控件是主屏幕显示的内容,第二个子控件是滑动菜单中显示的内容主布局:<?xml version="1.0" encoding="utf-8"?><androidx.drawerlayout.widget.DrawerL...原创 2020-02-20 14:17:46 · 415 阅读 · 1 评论 -
Material Design学习(一)——Toolbar
参考文章:【自定义控件】系统原生标题栏叫做ActionBar,而ToolBar继承了ActionBar全部的功能,还有很高的灵活性。一、原生标题栏打开HelloWorld项目的AndroidManifest.xml文件,会发现android:theme指定了属性为Apptheme: <application android:allowBackup="true"...原创 2020-02-20 00:16:35 · 414 阅读 · 0 评论 -
Android位置服务——百度LBS
通常定位有两种方法——GPS和网络定位手机GPS定位在室内信号差,不推荐。【不需要网络就能定位】网络定位的原理时根据手机网络附近的三个基站测速,从而获得手机到基站的举例,这种方法精确度一般。【但国内没法用Google API】所以一般用百度或高德的API来使用定位功能一、申请百度API key1、注册非商用是不收费的,注册使用地址,注册激活需要手机号和邮箱,待会在邮箱还要验证然...原创 2020-02-19 17:02:24 · 1053 阅读 · 1 评论 -
Android使用服务的最佳实践——写个下载器
看了《第二行代码》一段时间了,这次按照书上的内容,用服务写个下载器。先新建一个空项目day18_ServiceBestPractice一、步骤梳理添加依赖:okHttp定义回调接口,对下载过程监听以及处理:DownloadListener用AsyncTask编写下载功能:DownloadTask保证后台运行,创建下载服务:DownloadService编写前端:开始,暂停,取消按钮...原创 2020-02-18 19:10:14 · 553 阅读 · 0 评论 -
Android 服务学习(三)——服务的其他用法
本文代码继续上文day17_ServiceTest一、前台服务为了避免服务因系统内存不足而被回收,可以使用前台服务。前台服务会有通知栏常驻修改myService.java: public void onCreate() { super.onCreate(); Log.d(TAG, "onCreate: 创建服务"); Intent intent = ne...原创 2020-02-18 10:51:37 · 302 阅读 · 0 评论 -
Android 服务学习(二)——服务的基本用法
新建一个day17_ServiceTest空项目一、定义一个服务默认代码:public class MyService extends Service { public MyService() { } @Override public IBinder onBind(Intent intent) { // TODO: Return the...原创 2020-02-17 22:53:30 · 336 阅读 · 0 评论 -
Android 服务学习(一)——多线程编程
服务的运行不依赖于任何的用户界面,因而非常适合于执行那些不需要和用户交互而且长期运行的任务服务不会自动开启线程,所有的代码都默认运行在主线程当中我们需要在服务内部手动创建子线程,并在这里执行具体任务,否则会出现主线程堵塞的情况一、线程的基本用法只需要一个类继承Thread,然后重写父类的run()就行:class MyThread extends Thread{ @Override...原创 2020-02-17 19:01:32 · 1764 阅读 · 1 评论 -
Android网络技术(三)——网络编程的最佳实践
一、HttpURLConnection封装Httppublic class HttpUtil { public static String sendHttpRequest(String address){ HttpURLConnection connection = null; try { URL url = new URL(add...原创 2020-02-17 09:16:49 · 364 阅读 · 0 评论 -
Android网络技术(二)——解析XML和JSON格式的数据
一、解析XML格式的数据1、准备工作建立一个本地网页,访问``原创 2020-02-16 18:31:29 · 389 阅读 · 0 评论 -
Android网络技术(一)——WebView和HTTP协议
一、WebView的用法新建一个空项目day16_WebViewTestWebView 应用内嵌浏览器布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_...原创 2020-02-16 13:34:55 · 1134 阅读 · 0 评论 -
Android 多媒体(三)——播放多媒体文件
新建一个空项目 day15_PlayAudioTest一、播放音频播放音频一般使用MediaPlayer类实现:setDataSource():选择要播放的音频文件prepare():开始播放前调用这个完成准备工作start():开始或继续播放音频pause():暂停播放reset():停止并重置seekTo():跳转到指定时间stop():停止播放,之后无法再播放rel...原创 2020-02-15 17:50:22 · 464 阅读 · 0 评论 -
Android 多媒体(二)——调用摄像头和相册
一、使用摄像头拍照新建一个空项目day14_CameraAlbumTest布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pa...原创 2020-02-15 12:50:59 · 668 阅读 · 0 评论 -
Android 多媒体(一)——使用通知
通知可以在活动、广播接收器,服务里创建一、通知基本用法用Context.getSystemService(Context.NOTIFICATION_SERVICE)获取到NotificationManager对通知管理:NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICA...原创 2020-02-11 00:42:38 · 573 阅读 · 1 评论 -
Android Studio 接入实机
一、参数手机型号:MI 8MIUI 版本:MIUI 11 20.1.21 开发版Android 版本:10二、步骤1、打开设置,点击我的设备2、连续点击全部参数 -> MIUI版本直到弹出提示您已处于开发者模式,无需进行此操作3、返回设置,在更多设置中,找到开发者选项4、打开USB调试,和USB安装三、新的设备部署完成实机演示:...原创 2020-02-10 16:44:19 · 1449 阅读 · 0 评论 -
Android内容提供器(三)——自定义内容提供器
一、创建内容提供器的步骤1、继承ContentProvider类自定义内容提供器可以通过新建一个类去继承ContentProvider来创建自己的内容提供器,该类一共有6个抽象方法,新建MyProvider类:public class MyProvider extends ContentProvider { // 初始化的时候使用,完成数据库创建和升级,返回true代表成功...原创 2020-02-10 02:26:56 · 494 阅读 · 0 评论 -
Android内容提供器(二)——其他应用的数据
内容提供器的用法一般有两种,一种是使用现有的内容提供其读取操作相应应用程序的数据【比如系统电话簿,短信等】,另一种是创建自己的内容提供器提供外部访问接口一、基本用法Context.getContentResolver() 获取到ContentResolver类,再通过这个类进行增删改查。其中的增删改查方法不接收表名参数,而是接收内容URI做参数。URI由authority 和 path组成,一...原创 2020-02-07 00:06:30 · 283 阅读 · 0 评论 -
Android内容提供器(一)——权限机制
内容提供器(Content Provider)是Android 跨程序共享数据的标准方式,内容提供器可以选择对哪一部分数据共享,从而不会有泄露的风险。一、权限机制Android的权限归为两类:普通权限:不会威胁到安全和隐私的权限,系统会自动授权。普通权限需要在AndroidManifest.xml中声明即可危险权限:触及用户隐私或设备安全性的权限,这部分权限必须用户手动点击授权,危险权限...原创 2020-02-06 22:27:12 · 254 阅读 · 0 评论 -
Android数据存储(四)——LitePal 操作 SQLite
LitePal 是一款开源Android数据库框架,它采用了ORM的模式,将平时用到的一些数据库功能进行了封装【项目地址】:https://github.com/LitePalFramework/LitePal项目主页上就有详细的使用文档新建一个空项目 day12_LitePalTest一、配置 LitePal引入依赖库:implementation 'org.litepal.an...原创 2020-02-06 05:38:10 · 454 阅读 · 0 评论 -
Android数据存储(三)——SQLiteDatabase 操作 SQLite
一、创建数据库1、SQLiteOpenHelperAndroid 提供了SQLiteOpenHelper这个抽象类对数据库创建和升级,必须要重写onCreate()和onUpgrade()才行这个类有两个重要实例方法,getReadableDatabase()和getWritableDatabase(),两者都能打开数据库【存在则打开,否则创建后打开】,并返回一个可供读写操作的对象。当数据库...原创 2020-02-06 03:58:47 · 651 阅读 · 0 评论 -
Android数据存储(二)——SharePreferences存储
SharePreferences使用键值对的方式存储数据,支持多种数据的存储一、将数据存起来的步骤要用SharePreferences存储数据,首先要获取到SharePreferences对象,有三种方法:Context.getSharePreferences()第一个参数:指定文件名,不存在则会创建一个。存放目录:/data/data/<package name>/sha...原创 2020-02-05 23:07:51 · 863 阅读 · 0 评论 -
Android数据存储(一)——文件存储
Android主要提供了三种数据存储的方式:文件存储,SharePreferences存储,数据库存储。文件存储是最基本的数据存储方式,适合存储一些简单的文本或二进制数据一、将数据存储到文件中Context类提供了一个方法openFileOutput():第一个参数是文件名,文件名不包含路径,因为所有文件都是默认存储到/data/data/<package name>/fil...原创 2020-02-05 03:55:30 · 385 阅读 · 0 评论 -
Android使用广播的最佳实践——强制下线功能
看了《第二行代码》一段时间了,这次按照书上的内容,用广播写个退出登录的功能。强制下线功能会关闭掉所有的活动,然后回到登录界面。先新建一个空项目day10_BroadcastBestPractice一、管理页新建一个ActivityCollector类,用来管理所有的活动public class ActivityCollector { private static List<A...原创 2020-02-05 00:24:03 · 307 阅读 · 0 评论