android 8.1 在设置前台服务时, 发送通知, 需要指定一个 channelId; private void startForeground() { String channelId =""; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { channelId=createNotificationChannel(); } Intent intent = new Intent(this, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity (this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); ...
GreenDao使用中遇到的异常
类型 Character 无法直接存储到数据库 Character 类型不是原始支持的类型, 转换为 String 类型存储到数据库; private String firstCharString = "~"; @Transient private Character firstChar = '~';//放弃存储 public void setFirstCharString(String firstCharString) { // 在 set String 时, 给 Character 赋值 if (firstCharString.length() > 0) { firstChar = firstCharString.charAt(0); } else { firstChar = ...
使用本地aar包
软件环境 android studio: 2.2 MacOS 一般方式导入 aar 包放入 libs 文件夹下; // build.gradle repositories { flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile(name: 'aar_name', ext: 'aar') } 1234567891011 // build.gradlerepositories { flatDir { &n ...
Annotations(注解)支持库
compile 'com.android.support:support-annotations:24.2.0' 1 compile 'com.android.support:support-annotations:24.2.0' Nullness注解 使用@NonNull注解修饰的字段,方法参数,返回值, 都不可已为null。 @Nullable 表示可以为空 @Nullable public String notNull(@NonNull Fragment fragment){ return null; } 123 &nb ...
不同的drawable文件夹对图片内存占用的影响
同一张图片放在不同的drawable文件夹里, 使用时占用的内存是不一样的; 不同文件夹对应dpi 在android中, 以160dpi 的屏幕为基准, 在此屏幕上 1dip = 1px; 密度 描述 ldpi 低密度屏幕;约为 120dpi。 mdpi 中等密度(传统 HVGA)屏幕;约为 160dpi。 hdpi 高密度屏幕;约为 240dpi。 xhdpi 超高密度屏幕;约为 320dpi。此项为 API 级别 8 中新增配置 xxhdpi 超超高密度屏幕;约为 480dpi。此项为 API 级别 16 中新增配置 xxxhdpi 超超超高密度屏幕使用(仅限启动器图标,请参阅“支持多种屏幕”中的注释);约为 640dpi ...
Data Binding Library
数据绑定, 更简单的方式给View赋值和刷新; 软件环境: android版本: 兼容Android 2.1以上(API level 7+); Gradle版本: 1.5.0-alpha1 以上; Android Studio版本: 1.3以上; 配置 app model里的 build.gradle 添加; android { .... dataBinding { enabled = true } } 123456 android { .... dataBinding { enabled = true ...
EditText软键盘与光标
android中EditText有光标不弹出软键盘处理 当我们点击Edittext时(获得焦点),都会弹出系统默认的软键盘,在有时候会需要做到点击EditText不想显示软键盘,这时候我们就要想方法把软键盘给你从隐藏掉。有几种方法 方法一:在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden。(但是还是会弹出软键盘) 方法二:强制隐藏Android输入法窗口(此方法mouse在EditText中输入文本时会自动换行,但是会弹出软键盘)还有一个方法是这样的imm.toggleSoftInput(0, InputMethodManager.HIDEN ...
SVG与VectorDrawable
VectorDrawable是通过代码的形式构造 svg 矢量图; SVG Path 规则简介: M = moveto 起点(x,y) L = lineto 移动到(x,y) H = horizontal lineto 水平移动到(x) V = vertical lineto 垂直移动到(y) C = curveto 三次贝塞尔曲线(x1,y1,x2,y2,x,y) (x1,y1)(x2,y2)是开始和结束的控制点 S = smooth curveto 三次贝塞尔曲线(x2,y2,x,y) (x2,y2)是结束的控制点, 第一个控制点默认是前一个C或S的第二个控制点的反向, 前一个不是C或S, 则第一个控制点与当前点重合 Q = 二次贝塞尔曲线(x1,y1,x,y) 控制点(x1,y1) T = 二次贝塞尔曲线( ...
单元测试 — UIAutomator2.0
UI 自动化测试 听说可以模拟屏幕操作, 感觉挺有意思的, 有机会就学了一下; // 今天试了下, 模拟点击屏幕, 可惜一秒只可以点击5~6次, (ノ ̄(エ) ̄)ノ 添加依赖 androidTestCompile 'com.android.support.test:runner:0.4' // Set this dependency to use JUnit 4 rules androidTestCompile 'com.android.support.test:rules:0.4' // Set this dependency to build and run Espresso tests androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' ...
DialogFragment
有Dialoge样式的Fragment, 同 Fragment 有同样的生命周期 继承 DialogFragment 的子类 Activity 中 DialogFragment 的子类对象调用 show (FragmentManager manager, String tag)显示 DialogFragment 的方法 getDialog() 可获取默认的 Dialoge getArguments() 返回一个 Bundle 对象 setStyle (int style,int theme)设置样式, 例: .setStyle(DialogFragment.STYLENOFRAME, 0);//去掉标题 show (FragmentManager manager, String tag) 显示该 DialogeFragment 注意 在Activity中用 FragmentTransaction 调用add和show方法显示 ...