Android Basic
文章平均质量分 73
独上西楼-
纸上得来终觉浅,绝知此事要躬行
展开
-
Spinner (点击展示选项)使用方法
1. xml 使用spinner控件 <Spinner android:id="@+id/orientation_spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 2. 代码加载spinner控件 val spinner = findViewById&...原创 2022-05-18 14:13:03 · 1233 阅读 · 0 评论 -
Android 测试(Unit Test & Instrument Test)
1. 测试目录Android Studio 中的典型项目包含两个用于放置测试的目录。androidTest 目录应包含在真实或虚拟设备上运行的测试。此类测试包括集成测试、端到端测试,以及仅靠 JVM 无法完成应用功能验证的其他测试。test 目录应包含在本地计算机上运行的测试,如单元测试。2. 测试金字塔的级别小型测试(Unit tests)占 70%,中型测试(Integration tests)占 20%,大型测试(UI tests)占 10%3. 创建本地单元测试类JUnit 是最原创 2021-03-04 16:54:32 · 1335 阅读 · 1 评论 -
Android_View_ViewGroup_Window
类图记录View_ViewGroup_Window其中,View 和ViewGroup 是组合关系, View 依附在Window上,Window呈现给用户原创 2021-03-03 18:17:05 · 133 阅读 · 1 评论 -
Android_日志打印类
Android 开发中,很多文件都需要打印日志,如果每次都要导入包android.util.Log,定义一个TAG, 再写Log.d/ Log.i, 有些麻烦。所以最好在一个项目中,有一个日志打印类,专门负责打印日志。 哪些文件需要打印日志,则可以创建这个类的实例对象,并把类名/类对象 传递过去(作为TAG)。例如,定义一个Logger类, 提供String 类型为参数 或者 类对象(Class<?>) 为参数 的构造器; 然后再提供android官方Log的APIimport..原创 2021-01-28 11:04:04 · 446 阅读 · 1 评论 -
Android 对 颜色值 设置透明度
1. ColorUtils.setAlphaComponent(color, alpha)通过 graphics包里的 ColorUtils, 可以对任意一个color颜色值,设置透明度alpha( alpha必须在 [0,255] 之间)。返回值即为新的color 值 (int 类型)package androidx.core.graphics;public final class ColorUtils { @ColorInt public static int se.原创 2020-12-01 09:05:29 · 3869 阅读 · 0 评论 -
Android 自定义Preference (Url网站链接)
如在Preference里显示链接,在点击后跳转到对应网站。目录1. 自定义UrlPreference1.1 继承自Preference, 并提供构造函数1.2onCreateView 时添加自定义布局1.3 onBindView 时设置带下划线的字体1.4. 提供接口设置文本 和Url1.5. 响应点击事件2. XML 文件使用该UrlPreference3. 外部加载UrlPreference, 并设置文本和Url链接1. 自定义UrlPreference..原创 2020-11-19 11:15:06 · 327 阅读 · 0 评论 -
Android Studio_aar包制作及使用方法
一、 aar 包打包方法1. 新建一个Module, 选择 Android Library你可以先随便创建一个工程,然后执行以下操作:路径: File -> New -> New Module -> 选择Android Library -> 输入lib 的名称, 如networklib-> Finish2. 在新建的包中,添加你的代码.如新建 NetworkManager.java, 例子很简单,该包模拟从网络 获取热门 消息,供客户端调用。pa...原创 2020-09-15 14:26:11 · 1658 阅读 · 0 评论 -
Jar/ Aar 笔记
1. Jar: JavaArchive(Java 归档)是一种软件包文件格式。通常用于聚合大量的Java类文件、相关的元数据文件到一个文件,以便开发Java平台应用软件或库百度百科:https://baike.baidu.com/item/JAR/919533?fr=aladdin实际上在Android 开发中,Jar 包中是仅包含class文件与清单文件 ,不包含资源文件以ZIP 格式构建,以.jar为文件扩展名。2. Aar: Android Archive (...原创 2020-09-13 16:01:52 · 98 阅读 · 0 评论 -
Android Preference 笔记
需要从PreferenceScreen 中 删除某个Preference1 . 先获取PreferenceScreenPreferenceScreen ps = getPreferenceScreen();2. 获取要删除的PreferencePreference pf = findPreference(pfKey); // pfKey 为String类型3. 删除if (pf != null && ps != null) { ps.removePref.原创 2020-07-29 16:45:48 · 969 阅读 · 1 评论 -
Kotlin_ViewPager的简单使用_3_添加自动重复播放
基于上篇(添加了页面指示器):https://blog.csdn.net/whjk20/article/details/107409638添加自动重复播放, 重复部分不再写 // 自动重复播放 private fun startAutoRepeatPlay() { // 忽略检查 @SuppressLint("HandlerLeak") // 匿名内部类 val handler = object: Handler...原创 2020-07-21 11:09:00 · 199 阅读 · 0 评论 -
观察者模式笔记
观察者模式学习笔记,模拟微信公众号推送消息观察者:用户被观察者:微信公众号推送消息的内容可以是第三方服务商提供的类图如下,实现待续原创 2020-07-18 22:23:08 · 214 阅读 · 0 评论 -
Kotlin_ViewPager的简单使用_2_2
基于上篇(添加了页面指示器):https://blog.csdn.net/whjk20/article/details/107338023指示器的代码抽离出来,通过自定义VIEW实现, 重复部分不再写1. 继承ConstraintLayout, 自定义指示器VIEWclass ViewPagerIndicator @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle...原创 2020-07-17 15:35:53 · 1121 阅读 · 0 评论 -
Kotlin_ViewPager的简单使用_2
基于上篇的基本使用:https://blog.csdn.net/whjk20/article/details/107338023添加了页面指示器 (小圆点), 重复部分不再写目录1. ViewPager 布局下方添加小圆点作为指示器2. 创建指示器(小圆点),区分当前页和非当前页面(1)drawable.indicator_dot_on(2)drawable.indicator_dot_off3. 根据页面数量,创建指示器资源 (使用ImageView)4. 添加...原创 2020-07-17 14:15:45 · 1071 阅读 · 0 评论 -
Android 自定义View 学习笔记(含问题记录)
View(ViewGroup) 的绘制过程:1. 度量: onMeasure --------测量大小相当于装修房子测量房子的面积(包括各个房间的面积, 不能超过总面积)2 . 布局: onLayout (measureSpec, 布局参数LayoutParams, 布局加载LayoutInflater)相当于设计每个房间、位置摆放什么3. 绘制: onDraw相当于最终的装饰因为ViewGroup 是树形结构,会递归调用其孩子的这三个方法, 完成最终的绘制。...原创 2020-07-12 11:49:41 · 247 阅读 · 0 评论 -
MVC /MVP /MVVM 架构学习_类图(井子游戏和登录界面))
关于井字游戏很简单,相当于五子棋的缩小版(三子棋), 只要横、竖、对角线上三个标志一致,则获胜。使用 MVC /MVP /MVVM不同方式的实现,其实现已经在前几天篇写了,这里只是做总结。1. 总的类图:左边部分为MVC, 右边部分为MVP, 下面为MVVM其中Model 部分(Board) 是不变的,负责数据的处理2. MVCV: XML 布局文件充当VIEW 角色 (UI)C: Activity 充当Controller角色,负责初始化View,也负责View 和Model 之间原创 2020-07-09 13:08:24 · 2305 阅读 · 0 评论 -
MVC/ MVP / MVVM 架构学习之井字游戏_3_MVVM实现
MVP 的实现参考前一篇:https://blog.csdn.net/whjk20/article/details/107213294MVVM 的实现中, Model 部分仍然不变, 使用ViewModel 代替了Presenter, 并且修改了布局文件1. ViewModelpackage com.example.tictactoe.mvvm.viewmodelimport androidx.databinding.BaseObservableimport androidx.da..原创 2020-07-08 19:35:12 · 149 阅读 · 0 评论 -
MVC/ MVP / MVVM 架构学习之井字游戏_2_MVP实现
MVC 实现参考前一篇:https://blog.csdn.net/whjk20/article/details/107213015其中,布局文件和 Model 的实现不变, 使用Presenter 代替 Controller,把Activity 抽离出来成为View, 因此仅写变化的部分目录1. Presenter (与Model 和 View 交互)2. View (对View的操作抽象为借口 TicTacToeView, 供Presenter 调用 )1. Presenter (.原创 2020-07-08 19:30:35 · 203 阅读 · 0 评论 -
MVC/ MVP / MVVM 架构学习之井字游戏_1_MVC实现
最近发现在有很好的例子,可以精简地介绍MVC/ MVP / MVVM 架构的区别和关系。所以也做记录一下,以便后续的学习。MVC 的实现,其中Model 是游戏的关键实现,在这里可以忽略,侧重MVC 之间的交互1. Model (Player - Cell - Board)enum class Player { X, O}class Cell { var value: Player ?= null}class Board { //...原创 2020-07-08 19:21:25 · 297 阅读 · 0 评论 -
Kotlin_读写文件
读写文件操作记录 private fun createNewFile(): File { var file = File("output.txt") if (file.exists()) { file.delete() } file.createNewFile() return file } priva原创 2020-07-03 17:45:19 · 2644 阅读 · 0 评论 -
Kotlin_实现每天仅弹框提醒一次
有时应用的弹框提醒,仅需每天第一次运行的时候提示用户。可以通过本地存储一个日期值, 和系统的日期值做比较,不相等则弹框。其中:1. 本地存储日期值通过 SharePreference 实现存储和读取。2. 系统日期值 通过Calendar 获取, 这里仅是判断Day(也可以通过SimpleDateFormate获取完整的年月日,甚至时分秒, 例如每隔几个小时弹框)class MainActivity : AppCompatActivity() { val LAST_LAUN原创 2020-06-28 16:28:37 · 580 阅读 · 0 评论 -
Kotlin_RecyclerView_上拉刷新2
RecyclerView 的上拉刷新加载更多的基本实现 参考上篇:https://blog.csdn.net/whjk20/article/details/106975642上拉刷新还可以对RecyclerView 添加滑动监听 (addOnScrollListener), 然后通过回调进行模拟数据更新这里主要把加载更多插到RecyclerView 最后, 并非RecyclerView的数据中。1.布局文件 (分开加载中和加载失败)此处省略,跟之前的差异不大,只是分成两个文件2. 数据.原创 2020-06-27 10:48:38 · 514 阅读 · 0 评论 -
Kotlin_RecyclerView_上拉刷新1
RecyclerView 的基本实现参考前篇:https://blog.csdn.net/whjk20/article/details/106950422现实现 RecyclerView 的上拉刷新原创 2020-06-27 10:33:57 · 642 阅读 · 0 评论 -
Kotlin_RecyclerView_下拉刷新(SwipeRefreshLayout )
RecyclerView 的基本实现参考前篇:https://blog.csdn.net/whjk20/article/details/106950422现实现 RecyclerView 的下拉刷新, 通过组件SwipeRefreshLayout 实现1. 添加SwipeRefreshLayout 组件依赖包(app 目录build.gradle)implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'2原创 2020-06-26 20:32:41 · 1135 阅读 · 0 评论 -
Kotlin_RecyclerView_多种类型的条目
RecyclerView 多种类型的条目的实现:三种不同类型条目: 只有一张图片、 标题+图片 、 三种图片1. 条目的布局:条目1:<?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"原创 2020-06-26 18:40:46 · 1174 阅读 · 0 评论 -
Kotlin_RecyclerView_实现ListView效果
package com.example.androidrecyclerviewtest.adapterimport android.content.Contextimport android.util.Logimport android.view.Viewimport android.view.ViewGroupimport android.widget.ImageViewimport android.widget.TextViewimport androidx.recyclerview..原创 2020-06-26 16:52:08 · 907 阅读 · 0 评论 -
Kotlin_MVVM(databinding实现) 计数实例*
简单记录Kotlin 下使用MVVM的例子。实现:模拟数据变化, 更新UI (两个TextView, 一个显示名字,一个显示计数)一、app 目录build.grade 启动 dataBindingandroid { //... dataBinding { enabled = true }}二、创建UserData (M) 和UserViewModelclass UserViewModel : BaseObservable { .原创 2020-06-22 16:39:36 · 1282 阅读 · 0 评论 -
Kotlin_获取网络图片(HttpURLConnection, AsyncTask,协程)
最近学习一下使用Kotlin 从网络获取网络图片,先是学习HttpURLConnection的使用。一、 创建根据URL 获取图片的类class NetworkUtils { private var picture : Bitmap ?= null fun loadPicture(url: URL): Bitmap? { Thread(Runnable { var httpURLConnection: HttpURLConnection =原创 2020-06-15 15:40:58 · 2471 阅读 · 0 评论 -
Android _Drag 学习笔记
View 可以实现拖拽效果(Drag),根据参考API 文档,实现也简单。(Api 文档:https://tool.oschina.net/uploads/apidocs/android/guide/topics/ui/drag-drop.html)以下简单实现了拖拽效果,在拖拽的过程中,根据拖拽事件 更新ImageView 的背景颜色,方便理解拖拽事件的处理。但是 ACTION_DROP 没有执行,需要检查一下原因。此外,下一步进行研究 拖拽到指定目标View区域, 考虑能拖拽的范围等..原创 2020-05-21 16:16:11 · 580 阅读 · 0 评论 -
Koltin_Android学习笔记
记录下Koltin 在Android上的入门使用涉及 Koltin 基础(变量与赋值), ConstraintLayout(约束布局), ConstraintSet(代码实现约束布局)class MainActivity : AppCompatActivity() { lateinit var mButton : Button var mButtonText :...原创 2020-02-29 11:41:06 · 241 阅读 · 0 评论 -
ConstraintLayout学习笔记
ConstraintLayout: 约束性布局, 类似于相对性布局(RelativeLayout), 但是代码更简洁。参考了大神的介绍,学习了基本属性,自己动手写了下代码,增加记忆,Mark 一下(大神链接:https://www.baidu.com/link?url=S0vGu-ixKTCrSmXh9AwhZE8GW0drUi85-T-qfUf9zznuaGEcJbn8zTBdqnFsz...原创 2020-02-23 12:24:06 · 267 阅读 · 0 评论 -
Android Preference 事件处理
Android Preference 提供了较View 更为简便的界面布局方式, 无需定义Layout (其layout应该是在FW下已经定义好)类似TextView / CheckButton等, 只需XML文件定义然后在JAVA中使用即可.详细介绍参照: http://blog.csdn.net/qinjuning/article/details/6710003/ 这里只介原创 2015-11-10 14:15:01 · 768 阅读 · 0 评论 -
[Android Studio] AIDL
AIDL 用于进程间通信,广泛应用于安卓开发中.从Android 5.0开始,Google推荐使用Android Studio 进而取代原来的Eclipse.下面以一简单例子介绍AIDL的使用(非概念) ,基于 Android Studio (1.0.1).PS: AIDL 基础概念可以参考: http://blog.csdn.net/stonecao/article/detail原创 2015-11-06 14:23:29 · 419 阅读 · 0 评论 -
Android Call_01_basic
Call 在android中由底层到上层主要分为 Protocol / RIL / APP.APP 主要是提供UI,直接与用户交互。APP 层在5.0中分为三大块:TeleService/Telecomm/InCallUIInCallUI 提供通话的界面,负责与用户的交互。TeleService 主要负责与RIL之间的通信,获取RIL上报的消息以更新UI,或者执行UI操作向RIL发原创 2015-12-18 11:31:50 · 376 阅读 · 0 评论 -
Android Call_02_InCallUI & Telecomm Service
InCallUI & Telecomm Service原创 2015-12-22 16:56:11 · 478 阅读 · 0 评论 -
WindowManager- InvalidDisplayException
Android Window/WindowManager原创 2016-09-14 18:29:05 · 3962 阅读 · 1 评论 -
ActionBar学习笔记
ActionBar: Layout, ActionMode, Style原创 2016-11-23 11:23:55 · 491 阅读 · 0 评论 -
Android Style and Theme
Android Style Theme原创 2016-11-23 14:14:52 · 374 阅读 · 0 评论 -
Android 动画、背景选择器、透明度
最近项目遇到的几个问题,虽然简单,但是需知其原理。所以记录下。。Android 动画简单易懂介绍【链接】http://www.jianshu.com/p/d6d6c5dc88b5http://blog.csdn.net/danielntz/article/details/50950129Android selector(背景选择器)、透明度【链接】原创 2017-09-22 10:29:37 · 338 阅读 · 0 评论 -
Android_Animation(View)_2
View四种动画的各自属性原创 2017-10-09 16:48:38 · 239 阅读 · 0 评论 -
Android Layout 属性
基于网上的资料及自己使用的情况,整理了下Android 布局相关的属性,比较常用. 1. 基本属性android:id 为控件指定相应的IDandroid:text 指定控件的文本,置尽量使用strings.xmlandroid:grivity 指定控件的基本位置 ,比如举重,居右,android:padding转载 2015-11-20 10:59:48 · 450 阅读 · 0 评论