自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

teletian的专栏

软件开发

  • 博客(129)
  • 资源 (14)
  • 收藏
  • 关注

原创 Git 克隆子目录

有时候,一个仓库太大(包含很多个工程),下载费时,又占电脑的空间。如何只下载其中一个工程(子目录)呢?

2023-12-06 20:56:20 673

原创 Java 8 集合 Stream

Java 8 是一个成功的版本,新增的内容很实用。比如大家熟悉的 lamda 表达式,集合的 Stream,等等。本文讲讲 Stream 的使用。

2022-11-27 15:57:15 724

原创 Android 10 分区存储

以前,Android 开发者习惯在根目录建一个自己应用的文件夹,用于存放应用的数据。这样会导致用户卸载后,应用数据不会随之删除。导致手机文件特别混乱,长期占用空间,而且容易泄露用户隐私。其实 Android 早就提供了 getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir() 等 API 供开发者使用,但是开发者为了方便,没有去用。

2022-09-17 08:23:31 9981 1

原创 Android RadioGroup clearCheck() 的一个坑

通过debug,发现clearCheck之后,如果有RadioButton被选中,回调onCheckedChanged会被调用两次。今天在通过RadioGroup的clearCheck方法将所有的RadioButton设置为非选中的时候,发现怎么也不行。两次的checkedId分别是-1和选中的那个RadioButton的id。可以在clearCheck之前先把回调置空,然后clearCheck之后再设回来。如何避免选中的id被回调?...

2022-07-18 21:32:32 1152

原创 Android LayoutInflater 的一个坑

这样的话,如果要对添加的View做操作,可以传入false,最后再通过addView添加到容器中去。通过调查发现,最后一个参数传true和false,返回的View是有差别的。然后对view设置LayoutParams的时候,怎么也不起效果。最后一个参数传了true,就是想偷懒,省去addView的操作。...

2022-07-18 21:31:50 443

原创 Android 反编译 Apk

使用 apktool 反编译 apk

2022-07-16 17:38:25 189

原创 Android 自定义 View - 四个构造函数

View 的构造函数有四个:1. `public View(Context context)`2. `public View(Context context, @Nullable AttributeSet attrs)`3. `public View(Context context, @Nullable AttributeSet attrs, int defStyleAttr)`4. `public View(Context context, @Nullable AttributeSet attrs

2022-07-16 17:37:08 3587

原创 Andorid 自定义 View - 自定义属性 - 属性重复导致冲突

先来看一个自定义属性重复的例子:attrs.xml这样会报错如下:解决办法也很简单,把相同的属性抽出来定义就可以。

2022-07-12 19:35:53 572 1

原创 Andorid 自定义 View - 自定义属性基础

当我们自定义 View 的时候,至少要定义两个构造函数。第二个构造函数中的参数 attrs 可以获取在 xml 中添加的属性的值。系统已经给我们定义了以下属性,可以在 sdk/platforms/android-xx/data/res/values/attrs.xml 中找到。我们也可以自定义属性。declare-styleable 定义属性分组,名称一般和自定义 View 的名称一样。在 R 文件中就会生成 styleable 类。里面包含所有属性。attr 定义或者声明属性。注意,这边有两种方式

2022-07-10 21:45:05 705

转载 macOS 替换 Homebrew 源

Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 和 linux 系统上的软件安装过程。它拥有安装、卸载、更新、查看、搜索等很多实用的功能,通过简单的一条指令,就可以实现包管理,十分方便快捷。Homebrew 主要有四个部分组成: brew、homebrew-core 、homebrew-bottles、homebrew-cask。......

2022-07-10 21:41:19 249

原创 Android 动态获取 Resource ID

Android 开发中,当需要获取资源文件 ID 的时候,会按照下面的方式获取:但是如果有一组相似的图片,名称也很相似。比如电量图标,ic_battery_0,ic_battery_1,ic_battery_2,…,ic_battery_100。那么如果要根据电量值显示对应的图标的话,不管是 if else 还是 switch case,都需要写很多代码。如果用动态 Resource ID 的话,就会方便多了,下面介绍下做法...

2022-07-04 21:30:56 1651

原创 Android Canvas - StaticLayout 绘制多行文字

Canvas.drawText 只能绘制一行文字,文字多了会超出屏幕之外。要想绘制多行文字,可以使用 StaticLayout。

2022-07-04 21:29:38 993

原创 Android Canvas - saveLayer() & restoreToCount()

说起 saveLayer() & restoreToCount(),不得不先说 save() & restore()。saveLayer 和 save 相似,但是又有区别。

2022-07-03 14:24:03 916

原创 Android Canvas - save() & restore()

这有什么用呢?当调用 save 保存了画布的状态之后,就可以对画布为所欲为了(调用 Canvas 的平移、放缩、旋转、错切、裁剪等操作),反正可以调用 restore 恢复状态不是吗?save 和 restore 一般配套使用。......

2022-07-03 01:22:57 1382

原创 conda 常用命令

Anaconda 指的是一个开源的 Python 发行版本,其包含了 Python、conda 等 180 多个科学包及其依赖项。这个定义可能有点抽象,可以这样理解,Anaconda 提供了一个 Python 环境,并且已经替你下载好了很多常用的包(包括 jupyter notebook),省去了自行下载的麻烦。...

2022-07-02 23:17:43 341

原创 Android NDK(五)- ndk-stack 还原堆栈信息

native 的崩溃相比于 java 很难看懂,对于排查问题很不利。不过我们可以通过 NDK 中的工具 ndk-stack 来还原堆栈信息。

2022-06-26 15:38:01 1243

原创 Android NDK(四)- JNI 注册 Native 方法

JNI 的注册方式。静态注册和动态注册。

2022-06-24 21:37:12 627

原创 Android NDK(三)- JNI 异常

JNI 异常的使用

2022-06-24 21:36:04 637

原创 Android NDK(二)- JNI 基础

JNI 的一些基础知识

2022-06-18 16:22:58 561

原创 Android NDK(一)- 认识 NDK

NDK 以及 JNI 的简单介绍,并通过一个 NDK Sample 简单了解 Android 中 JNI 的开发流程。

2022-06-18 16:17:13 450

原创 Android Jetpack - ViewModel

◾︎简介ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。举个例子:在 MVP 中,Activity/Fragment 调用 P 层的异步请求。由于 P 层要持有 Activity/Fragment 的引用用于回调接口,当 Activity/Fragment 销毁后,造成内存泄露。为此,必须做大量的工作去管理异步请求。而 ViewModel 不持有 Activity/Fragment 的引用,不存在上述问题。ViewModel 的 UI 更新是通过观察者模式(LiveData)

2021-09-14 22:26:00 244

原创 Android Jetpack - LiveData

◾︎简介LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。这是官网上的一段话。意思就是 LiveData 的更新能够被 LifecycleOwner 所感知,但是前提是 LifecycleOwner 处于活跃状态。这样就有效的避免了更新 UI 时 Activity 已

2021-09-14 22:21:14 675

原创 Android Jetpack - Lifecycles

◾︎简介Lifecycles 是一个持有组件生命周期状态(如 Activity、Fragment)信息的类,并允许其他对象观察此状态。可以帮助我们方便的管理 Activity 和 Fragment 的生命周期。通过使用 Lifecycles 组件,可以将依赖组件的代码从生命周期方法移入组件本身中。有助于写出更有条理且往往更精简的代码,这样的代码更易于维护。生命周期的状态和事件如下图本文代码使用 Kotlin 讲解,若需查看 Java 代码写法,请参考文末 Sample◾︎添加依赖def li

2021-09-14 22:14:07 260

原创 Atom 常用快捷键

功能 快捷键 新建窗口 Windows : Ctrl + Shift + N macOS : Command + Shift + N 新建文件(标签) Windows : Ctrl + N macOS : Command + N 打开文件 Windows : Ctrl + O macOS : Command + O 打开文件夹 ...

2018-03-10 12:00:53 1912

原创 Android Material Design 之 Palette

简介Palette 即调色板。从图片中提取颜色,然后赋给相应的视图,使界面看起来更加协调好看。简单使用首先添加相应的依赖implementation 'com.android.support:palette-v7:26.0.0'Android Studio 3.0 开始新建项目默认使用 implementation 了,当然 compile 也能用。我们给 Layout 文件添加一个 ImageVi

2017-08-26 13:01:56 870

原创 Android Material Design 之 CardView

前言Material Design 推荐使用卡片布局,详情可以参照 https://material.io/guidelines/components/cards.html#简单使用下面我们使用 RecyclerView + CardView 来实现一个简单的 Sample。首先添加相应的依赖implementation 'com.android.support:appcompat-v7:26.0.

2017-08-19 18:48:25 1872

原创 Android Material Design 之 BottomNavigationView

概述BottomNavigationView 是 MD 风格的底部导航视图,也是比较常见的视图之一。 详细可以参照 MD 的官方文档 https://material.io/guidelines/components/bottom-navigation.html#bottom-navigation-style简单实现首先添加 design librarycompile 'com.android.s

2017-08-12 22:38:25 1595

原创 Android Material Design 之 NavigationView

DrawerLayout在讲 NavigationView 之前,我们先来回顾一下 DrawerLayout。 DrawerLayout 是抽屉导航控件,在 v4 包中。(Android Studio 创建项目时会自动加入 v7 包,而 v7 包是包含 v4 包的,所以不需要再导入 v4 包了)布局文件<?xml version="1.0" encoding="utf-8"?><android.

2017-08-09 23:20:55 1015

原创 Android Material Design 之 CoordinatorLayout + CollapsingToolbarLayout

前言Material Design 中有一种效果,向上滑动的时候折叠 Toolbar,向下滑动的时候展开 Toolbar(这里的向上和向下是手势方向,下文中也一样,不再重复说明)。具体效果可以参考下面的链接。 https://material.io/guidelines/patterns/scrolling-techniques.html#scrolling-techniques-behavior

2017-08-06 22:18:09 946

原创 Android Material Design 之 CoordinatorLayout + AppBarLayout

前言Material Design 中有一种效果,向上滑动的时候隐藏 Toolbar,向下滑动的时候显示 Toolbar(这里的向上和向下是手势方向,下文中也一样,不再重复说明)。具体效果可以参考下面的链接。 https://material.io/guidelines/patterns/scrolling-techniques.html#scrolling-techniques-behavior

2017-08-06 22:16:25 1039

原创 Android Material Design 之 CoordinatorLayout + FloatingActionButton

https://material.io/guidelines/components/snackbars-toasts.html#snackbars-toasts-usage 中的 Don’t block the floating action button 部分,当 SnackBar 显示的时候,FloatingActionButton 跟着一起往上移动。下面来看看怎么实现。首先添加 design

2017-08-06 22:15:20 1034

原创 Android Material Design 之 CoordinatorLayout

什么是 CoordinatorLayout官方文档是这么描述的 CoordinatorLayout is a super-powered FrameLayout CoordinatorLayout is intended for two primary use cases: 1. As a top-level application decor or chrome layout

2017-08-06 22:14:41 754

原创 Android Material Design 之 Toolbar

前言从 Android 3.0 开始,推出了 ActionBar。但是,随着版本的升级,ActionBar 的行为也发生了变化。从 5.0 开始,ActionBar 提供了 Material Design 的体验。但是想要 5.0 之前的系统也支持 Material Design 怎么办呢?那么就用 Toolbar 吧!Toolbar 在 Support Library 中,所有对应的系统版本都能有

2017-07-25 23:09:56 970

原创 Android Material Design 之 TabLayout

Material Design 中的 Tab 设计可以参考官方文档 https://material.io/guidelines/components/tabs.html#tabs-usage ,其中的 Tab 部分 Support Library 提供了专门的控件 TabLayout。TabLayout 的简单使用布局文件的定义如下:<?xml version="1.0" encoding="ut

2017-07-24 22:57:48 1081

原创 Android CheckBox setButtonDrawable(null) 在 4.x 版本中无效

当我们需要只显示 CheckBox 的文字,而不显示按钮的时候,通常在 XML 文件中设置 CheckBox 的 android:button=”@null”。当我们自定义 CheckBox 并希望在代码中控制按钮不显示的时候,可以 setButtonDrawable(null) 来达到效果。但是有一个问题,setButtonDrawable(null) 在 4.x 中是没有效果的,从 5.0 开始

2017-07-19 22:08:45 1548

原创 Android Material Design 之 TextInputLayout

TextInputLayout 是 Material Design 风格的输入框。效果如下。EditText 在获取焦点的时候,hint 会作为 title 移动到上面去,这样用户输入的过程中也能看到 hint。TextInputLayout 自带 Error Message,当发生错误的时候,消息显示到线的下方,并且线的颜色也会变掉。EditText 只要用 TextInputLayout 包裹一

2017-07-19 22:07:53 1064

原创 关于 Android NumberPicker 的两个问题

使用 NumberPicker 的过程中发现两个问题 1. NumberPicker 的 setFormatter 对第一个显示的 Item 没有效果。 2. NumberPicker 没有提供接口去修改它的 Design。NumberPicker 的 setFormatter 对第一个显示的 Item 没有效果numberPicker.setMinValue(0);numberPicker.

2017-07-19 22:06:40 2683

原创 Android 自定义 EditText 达到从右边输入的效果

背景最近项目要求可以输入体重,而且小数点是自动输入的,不需要用户输入。这样就带来一个问题,体重的整数位可以是两位,比如 60.5,也可以是三位,比如 100.5,如果单位是 g,也可以是四位,比如 1000.5。那么小数点自动输入的话,是在第二位整数后面输入?还是在第三第四位整数后面输入?这个根本没有办法判断!所以 UX 提出了一个方案:小数点固定为两位,输入时从右边开始输入。举个例子:如果想输入

2017-07-19 22:05:29 3507

原创 Android DataBinding (六) EditText 绑定 TextChangedListener 和 FocusChangeListener

XML 如下设定<EditText ...... app:addTextChangedListener="@{vm.textWatcher}" app:onFocusChangeListener="@{(view, hasFocus) -> vm.setText(((EditText)view).getText().toString(), hasFocus)}" />View

2017-07-19 21:57:47 9420 1

原创 Android DataBinding (五) 自定义 View 的双向绑定

前言自定义 View 的时候如果用到非系统定义的属性的时候,如果要实现双向绑定,不是用了 @= 就行的,自定义 View 中还需要一些设置。下面通过一个例子来说明自定义 View 的双向绑定的实现。例子要求: 1. 通过 RadioButton 来选择爱好(爱好的选项是:吃饭 / 睡觉 / 打豆豆) 2. 画面加载的时候显示初始的爱好值(将 ViewModel 里设好的值传到 RadioButt

2017-07-16 00:33:10 14254 2

GCD资源竞争Demo

GCD资源竞争Demo。注意,别运行imagegcd2.m,这是个反面教材。

2014-01-23

iOS5 UIViewController 新特性

iOS5 UIViewController 新特性 UIViewController的切换

2014-01-10

NavigationDrawerDemo android support v7 appcompat

使用V7的Navigation Drawer的例子

2013-10-28

Action Bar Demo

一个Action Bar Demo,在4.0以上的版本上运行

2013-10-27

一个AsyncTask的Demo

一个AsyncTask的Demo,简单的描述了AsyncTask的操作

2013-07-14

安全なウェブサイトの作り方

安全なウェブサイトの作り方

2012-12-23

Android音频和视频播放

Android音频和视频播放

2012-12-17

Android中XML解析

Android中XML解析。一个很简单的例子,用SAX的方法解析

2012-06-12

NotificationDemo.rar

状态栏通知Notification 简单的使用

2012-05-03

Gallery&ImageSwitcher;实现图片浏览效果

Gallery&ImageSwitcher;实现图片浏览效果

2012-04-28

SimpleAdapter实现的GalleryDemo

SimpleAdapter实现的GalleryDemo

2012-04-28

BaseAdapter实现的GalleryDemo

BaseAdapter实现的GalleryDemo

2012-04-28

android实现拖拽图片的操作

这个工程是Observable与Observer的经典运用,是android实现拖拽图片的操作

2012-04-18

android实现单指拖动放大缩小图片

这个工程是Observable与Observer的经典运用,是android实现的单指拖动放大缩小图片的操作

2012-04-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除