Android
ImportSUC
厚积薄发
展开
-
Kotlin 协程基础Coroutine
Kotlin 协程基础Coroutine [kəruː’tiːn]需要了解的概念,类1.协程与线程的区别本质上,协程是轻量级的线程一个线程中可以有N个协程。协程中也可以有N个子协程。2.Dispatchers类 -调度器,指定协程运行在哪个线程中@JvmStatic //与IO共享线程池,区别在于Default限制了最大并发数,最少2个,最大为cpu的核数public actual val Default: CoroutineDispatcher = createDefaultDispatch原创 2021-06-07 09:45:05 · 314 阅读 · 0 评论 -
ARouter初始化及跳转原理
Arouter初始化及跳转原理编译后生成文件仓库类``class Warehouse { // Cache route and metas static Map<String, Class<? extends IRouteGroup>> groupsIndex = new HashMap<>(); static Map<String, RouteMeta> routes = new HashMap<>();原创 2021-04-02 15:54:29 · 617 阅读 · 0 评论 -
搞懂Android Jetpack ViewModel 使用及原理
ViewModel 的官方解释ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存ViewModel 的用处暂存数据根据官方简介,ViewModel可以暂存数据,当界面发生横竖屏切换时,viewmodel中的数据不会发生变化。只有当Activity或者Fragment被销毁时,ViewModel才会被销毁。ViewModel的生命结束周期是与Activity/Fragment一致的,所以不存在内存泄漏的问题。V原创 2020-10-22 20:50:18 · 729 阅读 · 0 评论 -
ImageLoader 框架 图片下载失败重试
设置下载监听public static ImageLoadingListener getDefaultListener() { if (imageLoadingListener == null) { synchronized (ImageLoaderUtils.class) { imageLoadingListener = ne原创 2017-10-26 14:20:11 · 1022 阅读 · 0 评论 -
Gson 解析泛型出现ClassCastException
在项目中使用了Rxjava+Retrofit 作为网络框架,在使用中遇到遇到Gson无法解析泛型,出现ClassCastException。从代码看这个问题是由于Gson 拿不到我们要它解析的那个实体类的类型。本质上时因为Java的泛型擦除机制导致。 解决办法:将要解析的类型明确的传给gson仿照GsonConverterFactory 写一个解析器,具体代码可以参考GsonConverterFa原创 2017-09-22 13:20:29 · 788 阅读 · 0 评论 -
Android TV RecyclerView 焦点处理及获取焦点的Item保持在中间
原生RecyclerView 在Tv中的焦点处理很不好,经常找不到焦点或者焦点丢失。原因是因为当item未显示时即未加载时时不能获取焦点的。所以当我们按上下键时经常丢失焦点或者焦点乱跳。要解决这个问题我们必须要手动控制RecyclerView 的按键和焦点移动。package com.phicomm.ottbox.view;import android.content.Context;impor原创 2017-09-11 20:29:48 · 21857 阅读 · 9 评论 -
Android GridView 设置间距不起作用
注意添加如下两个属性android:numColumns="auto_fit"android:stretchMode="columnWidth"之后就可以设置间距了android:verticalSpacing = "10dp"或者代码中gridview.setVerticalSpacing(10);原创 2017-09-11 19:07:42 · 4393 阅读 · 0 评论 -
Android 反射获取私有方法,成员变量
public class AppInfo { private String mAppName; public String getAppName() { return mAppName; } public void setAppName(String appName) { this.mAppName = appName; }} p原创 2017-09-27 10:12:48 · 5408 阅读 · 0 评论 -
Android 自定义seekbar
在开发时经常会使用自定义的seekbar,毕竟系统自带的很难看。每次都是从网上找一些方法,但是每次都会试好几个才会实现效果。现在记录下来,备用。两个重要的属性:android:progressDrawable:进度条的颜色android:thumb:滑块的drawable要修改的就是这两个属性。首先在drawable文件夹下新建一个seekbar_define_style.xml,作为progre原创 2017-03-03 09:52:43 · 835 阅读 · 0 评论 -
Android Tv 背景动态改变,带过渡效果
在Android TV 中,当选中某一个item时,背景切换成模糊处理后的该资源图片,切换时不能很突兀,要有过渡效果. 实现步骤获取当前选中item中的图片:首先获取当前焦点所在的View,通过ViewTreeObserver.OnGlobalFocusChangeListener监听全局焦点,当焦点移动时,获取焦点所在View,如果按键间隔时间低于350ms,则不执行。原创 2018-01-18 10:50:26 · 2162 阅读 · 2 评论 -
Android 获取mac地址方法
/** * 通过网络接口获取MAC地址 *type = eth0,获取有线mac * type=wlan0,获取无线mac * @return */ public static String getMac(String type) { try { List all = Collections.list原创 2018-01-18 11:21:16 · 1597 阅读 · 0 评论 -
Android Tv 开机没有焦点
在项目中发现,Android Tv开机后,会没有焦点。但是获取焦点的代码是执行过的,也就是说,代码没起作用。这是因为开机后,系统默认是Touch Mode,即触摸模式。此模式下没有焦点。当按遥控器时,退出Touch Mode,焦点出现。所以当我们开机时第一次无论按哪个按键都不会有响应,第二次及以后才会有响应。 解决办法:发送模拟按键事件。/** * 开机时系统处于touch m原创 2017-09-22 13:29:43 · 1365 阅读 · 2 评论 -
Android TV item 选中 放大,加边框
Android Tv 的交互是通过遥控器来进行的,焦点移动是用户操作后的直观感受。如何让用户直观的操控Tv是本文的重点介绍内容。 1. Tv开发一般都会有自定义的Launcher,launcher中显示媒体资源数据。类似下图 每个item选中后会有个边框,并且会变大。下面将如何实现这个效果。放大效果首先item的布局,以LinearLayout为例,我们要的效果是当Lin原创 2017-09-11 20:15:24 · 5916 阅读 · 5 评论 -
Android Studio3.3 之 Navigation Editor 详解
Android Studio3.3 Navigation Editor(导航编辑器)简单使用AS 3.3更新后,最大的看点就是Navigation Editor, 根据官方文档学习了一下,在这记录一下,帮助不能翻墙的同学学习这个新功能。导入Navigation Editor在app中的build.gradle中加入 def nav_version = &amp;amp;quot;1.0.0-alpha0...原创 2019-01-22 15:23:18 · 3429 阅读 · 0 评论 -
封装Android带Lottie动画的底部导航栏
什么是Lottie动画Lottie 是Airbnb开源的一个面向 iOS、Android、React Native 的动画库,能分析 Adobe After Effects 导出的动画,并且能让原生 App 像使用静态素材一样使用这些动画,完美实现动画效果,动画效果比原生动画要优美很多。Lottie动画由UI提供,UI给到我们的是xxx.json文件,这个文件就是动画文件。优点:动画效果好...原创 2019-04-02 10:46:26 · 5105 阅读 · 8 评论 -
一张图搞懂Android中分辨率,DPI,DP与PX的关系
原创 2019-04-16 16:29:51 · 1411 阅读 · 0 评论 -
Activity启动流程图解
参考:https://www.jianshu.com/p/733664614fa2https://blog.csdn.net/zhaokaiqiang1992/article/details/49428287###原创 2019-10-10 11:01:27 · 212 阅读 · 0 评论 -
android 在图片上涂鸦(添加水印同理)
public Bitmap getNoseInfo(float x,float y,Bitmap srcBitmap){ Log.i("wangchao","x=="+x+",y=="+y); Bitmap tmp; tmp =srcBitmap.copy(Bitmap.Config.ARGB_8888, true); Canvas原创 2016-02-29 12:15:02 · 906 阅读 · 0 评论 -
Android 耳机按键与拔插监听
按键监听:public class MyMediaButtonReceiver extends BroadcastReceiver{ private AudioManager mAudioManger; @Override public void onReceive(Context context, Intent intent) { String intentA原创 2016-07-28 21:12:01 · 2203 阅读 · 0 评论 -
android 数据库升级(保留原先数据)
在onUpgrade()中处理 db.execSQL("CREATE TABLE " + "'post2' (" + //post2 为暂存文件名,可以在这里添加字段或者删除字段 "'_id' INTEGER PRIMARY KEY ," + "'SONG_ID' INTEGER UNIQUE ," +原创 2016-06-29 20:54:38 · 971 阅读 · 0 评论 -
Android 程序运行崩溃:Resource is not a drawable (color or path)
解决办法:1.检查manifest是否使用了自定义style。2.检查自定义style 是否有parent,没有的话会导致这个异常,将parent 属性加上 错误代码: 修改方法就是上面所说的将 style background 添加parent属性原创 2015-12-11 17:37:49 · 6340 阅读 · 0 评论 -
Android-Universal-Image-Loader 的使用
出自http://blog.csdn.net/vipzjyno1/article/details/23206387 ,转载以备用这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了转载 2015-12-11 18:04:37 · 559 阅读 · 0 评论 -
Android 图片工具类整理
1.将图片转换成圆形 /** * 转换图片成圆形 * @param bitmap 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height原创 2015-12-21 10:27:49 · 677 阅读 · 0 评论 -
Image-Universal-ImageLoader 最简单的使用(新手快速上手)
用完Image-Universal-ImageLoader 总结一下,对于开发来说,最重要的是快捷,方便。本文介绍的是怎么快速方便的使用imageloader。想详细学习的同学,请参考http://blog.csdn.net/yiranhaiziqi/article/details/50267123。1.权限<uses-permission android`:name="android.permis原创 2015-12-21 10:40:43 · 676 阅读 · 0 评论 -
网络连接
参数1 url地址,参数2 命令public static String accessNetworkByPost(String urlString, String contents) throws IOException { String line = ""; DataOutputStream out = null; URL postUrl;原创 2016-01-06 09:55:58 · 398 阅读 · 0 评论 -
android 判断应用是否在后台
此方法可以判断应用是否在后台,返回false 说明在后台private boolean isAppFront(){ String packageName = this.getPackageName(); ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVI原创 2016-01-06 09:58:38 · 563 阅读 · 0 评论 -
android 监听Home键和亮灭屏
1.注册广播 IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);//home键 //filter.addAction(Intent.ACTION_USER_PRESENT);//用户解锁广播 filt原创 2016-01-06 10:03:37 · 1388 阅读 · 0 评论 -
App 的登陆安全机制
转自 http://geek.csdn.net/news/detail/50023安全机制的设计现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是:用户用密码登录成功后,服务器返回t转载 2016-01-11 10:07:57 · 3903 阅读 · 0 评论 -
Android 四种启动模式
转自http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html 一、启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置; 启动模式有4种,分别为standard、singleTop、singleTask、single转载 2016-01-11 12:02:17 · 491 阅读 · 0 评论 -
Ubuntn 下 jdk 安装
今天开始在Ubuntu下搭建android环境,现在记录如下: 首先下载jdk版本,我下的是jdk1.6 放到home/wangchao(用户名)/下,然后解压(直接双击即可),然后重点就是配置环境变量了。 通过命令 sudo gedit /etc/profile 进入配置文件,然后在最后添加如下内容(仔细看好,不要写错):expo原创 2015-11-30 10:59:19 · 489 阅读 · 0 评论 -
android Asynctask 和Handler的优缺点
一 Asynctask的优缺点?AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.优点:1.简单,快捷2.过程可控3.使用的缺点:缺点: 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.Android的AsyncTask比Handle转载 2016-01-13 18:14:26 · 1046 阅读 · 0 评论 -
Android 调用闪光灯
1.打开闪光灯try { Log.i("tag", "~~~~~~~~~~~打开闪光灯~~~~~~~~~~~"); camera = Camera.open(); camera.startPreview(); Parameters parameters = camera.g原创 2016-01-13 20:00:04 · 2050 阅读 · 1 评论 -
Android 轻量级sqlite orm 框架
Android 轻量级sqlite orm 框架 可以方便我们对数据库的操作,只要几行代码就可以实现对数据库的增删改查。 下载 kkorm-library-1.0.jar ,导入工程。package com.kkorm.activity;import java.util.List;import com.example.kkorm_demo.R;import com.kkorm.data.Enti原创 2016-01-13 20:20:09 · 659 阅读 · 0 评论 -
android 实现录像时拍照
实现思路:点击拍照按钮后,获取摄像头的一帧数据,转换成jpg格式,保存到文件中。 Activity 继承Camera.PreviewCallback 重写public void onPreviewFrame(byte[] data, Camera camera); 首先创建MediaRecorder,Camera实例创建cameraif (mCamera == null) {原创 2016-03-16 18:35:34 · 3920 阅读 · 3 评论 -
Android 实现预览,录像,拍照
package com.demo;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import a原创 2016-02-18 16:03:39 · 1041 阅读 · 1 评论 -
ImageLoader 加载本地图片与视频的缩略图
加载本地图片与视频的缩略图与加载网络图片的区别在于 我们要将文件的路径转换成Uri。Uri uri = Uri.fromFile(new File(path));ImageLoader.getInstance().displayImage(uri+"", viewHolder.image,getImageOptions());ImageLoader 会生成视频的缩略图,不需要我们处理。我们只需要在原创 2016-03-30 16:41:20 · 4588 阅读 · 0 评论 -
底部导航栏实现
实现这种导航栏有很多种方法,本例使用的是Fragment+RadioButton fragment 为中间空白部分,radiobutton为底部按钮main_activity 布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and原创 2015-11-04 17:50:20 · 553 阅读 · 0 评论