自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 创建android库,使用jitpack

1、在github上正常创建项目,项目写成单独的lib库的形式2、在giuhub上项目右侧,点击Create a new release,填写之后提交3、在jitpack网站https://jitpack.io/#mlsnatalie/JitPackDemo上填入项目地址,搜索出项目后,点击get it,生成需要的包...

2021-01-04 17:18:35 208

原创 android设备获取唯一性ID

一、前言设备ID,简单来说就是一串符号(或者数字),映射现实中硬件设备。如果这些符号和设备是一一对应的,可称之为“唯一设备ID(Unique Device Identifier)”不幸的是,对于Android平台而言,没有稳定的API可以让开发者获取到这样的设备ID。开发者通常会遇到这样的困境:随着项目的演进, 越来越多的地方需要用到设备ID;然而随着Android版本的升级,获取设备ID却越来越难了。加上Android平台碎片化的问题,获取设备ID之路,可以说...

2020-12-30 15:09:15 2572

原创 gradle简介

1、gradle基本原理Gradle是一种以Groovy语言为基础的自动化构建工具 自动化构建本质上也是一种程序,我们开始编译时就启动这个程序,然后读取我们在 gradle 文件中配置的参数来实例化各个类,然后按照顺序依次执行对应的任务即可完成整个构建任务。 所以 build.gradle 文件,或者其他后缀为 gradle 的文件其实就是个配置文件,就好像 xml 一样,我们在 gradle 文件中修改各种配置参数,Gradle 通过这些参数来实例化 Project 等等就像构造器一样,只要理解了

2020-12-22 15:13:00 4562

原创 fragment的onResume,setUserVisibleHint,onHiddenChanged,isVisible方法

写在开头最近公司的一个项目需要的Fragment可见的时候处理一些逻辑,UI结构并非Tablayout+viewPager+Fragment结果,而是FragmentTabHost+Fragment的结构,所以有了一些坑,不知道你是否遇到过,从源码层面看一下这些问题,写出来希望大家判断好与坏。思考:公司之前代码是在onResume方法中写逻辑,后来想了下,这明显是不对的,大家都知道Fragment的onResume是依赖于附属Activity的onResume方法的,当你从fragment的跳转

2020-12-16 14:20:05 363 2

原创 andriod下fragment的懒加载

前言以前处理 Fragment 的懒加载,我们通常会在 Fragment 中处理 setUserVisibleHint + onHiddenChanged 这两个函数,而在 Androidx 模式下,我们可以使用 FragmentTransaction.setMaxLifecycle() 的方式来处理 Fragment 的懒加载。 在本文章中,我会详细介绍不同使用场景下两种方案的差异。大家快拿好小板凳。一起来学习新知识吧! 本篇文章涉及到的 Demo,已上传至Github---->传送门 老的懒加

2020-12-16 14:18:19 191

原创 android 同时使用kotlin和Butterknife的坑

在老项目中,一般会使用butterKnifeimplementation "com.jakewharton:butterknife:$rootProject.butterKnifeVersion"annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion"当我们引入kotlin时会遇到butterKnife失效当问题,这时候要将annotationProcessor改为kap

2020-11-25 14:44:44 748

原创 android remoteViews

## 1、RemoteViews介绍- remoteviews是一个远程view,是运行在另外一个线程里的view- 可以跨进程更新view- 主要应用在通知栏Notification和桌面小部件中## 2、RemoteViews在通知栏中的运用- 废话不多说,直接上代码 private fun openRemoteViewNotification() { val manager = getSystemService(Context.NOTIFICATION_SER

2020-11-23 18:19:33 389

原创 LifeCycle-生命周期感知型组件的最佳做法

1、使用LifeCycle的使用原则使界面控制器(Activity 和 Fragment)尽可能保持精简。它们不应试图获取自己的数据,而应使用ViewModel执行此操作,并观察LiveData对象以将更改体现到视图中。 设法编写数据驱动型界面,对于此类界面,界面控制器的责任是随着数据更改而更新视图,或者将用户操作通知给ViewModel。 将数据逻辑放在ViewModel类中。ViewModel应充当界面控制器与应用其余部分之间的连接器。不过要注意,ViewModel不负责获取数...

2020-11-20 13:52:18 115

原创 android常见的架构设计原则-参考google文档

常见的架构原则分离关注点请注意,您并非拥有 Activity 和 Fragment 的实现;它们只是表示 Android 操作系统与应用之间关系的粘合类。操作系统可能会根据用户互动或因内存不足等系统条件随时销毁它们。为了提供令人满意的用户体验和更易于管理的应用维护体验,您最好尽量减少对它们的依赖。通过模型驱动界面另一个重要原则是您应该通过模型驱动界面(最好是持久性模型)。模型是负责处理应用数据的组件。它们独立于应用中的 View 对象和应用组件,因此不受应用的生命周期以及相关的关注点的影响。

2020-11-05 17:42:53 181 1

原创 Android-画圆环

绘制圆弧方法public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)参数说明oval:圆弧所在的椭圆对象。startAngle:圆弧的起始角度。sweepAngle:圆弧的角度。useCenter:是否显示半径连线,true表示显示圆弧与圆心的半径连线,false表示不显示。paint:绘制时所使用的画笔。public cla.

2020-10-27 21:24:16 301

原创 android-使用Popupwindow

PopWindwos弹窗private fun showStockPickPopupWindow(context: Context?, currentView: View, data: FStockPickerIndexEntity) { if (mLongPressSelectPopupWindow != null && mLongPressSelectPopupWindow!!.isShowing) { return }.

2020-08-20 17:30:30 90

原创 android-获取一个view在屏幕上的位置

如果需要计算一个view在屏幕上的位置,可以使用getLocationOnScreen来计算int[] location = new int[2]; view.getLocationOnScreen(location); int x = location[0]; //距离屏幕左边的距离 int y = location[1]; //距离屏幕顶部的距离参考:https://blog.csdn.net/centralperk/article/details/7949900...

2020-08-20 17:03:09 722

原创 inflate使用方法总结

inflater.inflate(R.layout.layout_inflate_test,null);inflater.inflate(R.layout.layout_inflate_test, root,false);inflater.inflate(R.layout.layout_inflate_test, root,true); 在android加载布局中,activity中使用setContentView的方法来加载布局,而自定义布局中,使用inflater来加载布局。...

2020-07-06 17:36:02 2043

原创 RecyclerView 中item滑动到制定的位置

最近工作比较忙,很久没有写博客了,今天来记录一下recyclerView中item的滑动。一、在recyclerView中,滑动有几种方法1.scrollBy(int x, int y)这个可以滑动一定的像素,没有滑动动画2.smoothscrollBy(int x, int y)这个可以滑动一定的像素,有滑动动画3.scrollToPosition(int pos...

2019-08-19 10:39:15 404

原创 Dialog、popUpWindow中dismiss()时候crush的错误解决方法。

在使用dialog、popUpwindow的时候,需要依附当前的activity,如果当前的activity已经destroy了,这个时候去调用dismiss方法,会造成crush。正确的做法有两种。1、在Activity的onDestroy方法中,判断dialog时候存在,如果存在,销毁掉。override fun onDestroy() { super.onDestr...

2019-06-25 16:17:08 858

转载 细说 Kotlin 的 Lambda 表达式

我们总是会用到 Lambda 表达式,它在 Kotlin 当中的地位可以说是举足轻重的。那么我们今天就来详细聊一聊 Lambda。1. 什么是 Lambda 表达式Lambda 表达式,其实就是匿名函数。而函数其实就是功能(function),匿名函数,就是匿名的功能代码了。在 Kotlin 当中,函数也是作为类型的一种出现的,尽管在当前的版本中,函数类型的灵活性还不如 Python 这样...

2019-03-14 17:56:05 368

原创 kotlin方法的执行 invoke

fun tryOpenController() { paramManager.getParamByDefault { openByParam(it) } }fun getParamByDefault(callback: ((param: CameraParam) -> Unit)?) { callback?.invoke(defaultP...

2019-03-14 17:53:50 12174 4

原创 防止接口做两次请求,解绑

在Android的网络请求中,为了防止多次点击引发的多次请求网络接口,可以使用unSubscribe来处理这个问题1. 解除绑定的代码private fun unSubscribe(subscribe: Subscription?) { if (subscribe != null && !subscribe.isUnsubscribed) { ...

2019-03-14 16:48:09 671

原创 runOnUiThread在主线程更新UI

在主线程中更新UI,一般有两个方法,使用handle和runOnUiThread的方法1. 使用handle的方法更新UI2. 使用runOnUiThread更新UIActivity.this. runOnUiThread(new Runnable() { @Override public void run() { // refresh ui 的操作代...

2019-03-11 16:30:29 931

转载 rxjava在Android中的使用

前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJ...

2019-03-11 16:04:52 121

转载 Android 观察者模式

1.定义定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。2.介绍观察者属于行为型模式。 观察者模式又被称作发布/订阅模式。 观察者模式主要用来解耦,将被观察者和观察者解耦,让他们之间没有没有依赖或者依赖关系很小。3.UML类图观察者模式UML类图 .jpg角色说明:Subject(抽象主题):又叫抽象被观察...

2019-03-11 14:46:29 96

原创 Android 6.0以上版本动态请求权限

Demo地址:https://github.com/mlsnatalie/AddPicture1.使用依赖动态请求权限1、在Manifest里设置权限2、引入github上的依赖库 github项目地址:https://github.com/mlsnatalie/Asi-libraryimplementation 'com.github.dfqin:grantor:2.5'3、在需...

2019-01-21 14:49:43 375

原创 Android 把后台应用切换到前台

1、判断当前应用是否在前台private fun isForeground(context: Context): Boolean { val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager val tasks = am.getRunningTasks(1) ...

2019-01-17 15:26:04 5698

原创 Android滑动按钮的设置

Android中有时候会用到滑动按钮1、滑动按钮的布局如下<Switch android:id="@+id/encoder_support" android:layout_width="wrap_content" android:layout_height="wrap_content" android:...

2019-01-15 17:58:25 1215

原创 Activity的堆栈的操作

对Activity的堆栈的一些操作package com.meishe.sdkdemo.utils;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.widget.Toast...

2019-01-15 17:48:43 593

原创 代码中动态设置控件的宽、高

有些时候需要动态设置控件的宽高,比如我就遇到了一个设置titleBar右侧图片的宽高的问题,解决方法如下,直接上代码 title_bar_video_main_fragment.ivRight.run { layoutParams.width = DisplayUtil.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24f)...

2019-01-14 16:05:52 715

原创 确认取消弹窗的监听事件

在android中,很多时候要用到确认取消弹窗,监听弹窗的确认和取消,也是经常用到的方法。LiveHintDialog liveHintDialog = new LiveHintDialog(this); liveHintDialog.setTitleText(getString(R.string.text_optional_stock_setting_whether_del...

2018-11-28 09:42:10 1928

原创 微信登录Fragment界面

最近有一点空余的时间,写了一个微信登录Fragment界面,目前只有界面,功能要慢慢往里加1. 首先写一个MainActivity,在里面有登录按钮class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCrea...

2018-11-27 15:24:46 611

原创 kotlin单例模式

1. 单例是很常见的一种设计模式,Kotlin干脆从语言级别提供单例,关键字为object,如果你在扩展了Kotlin的IDE里输入singleton,IDE也会自动帮你生成一个伴随对象,也就是一个单例object TheOne { val version = "1.01"}2. 如果一个类需要被定义为class,又想做成单例,就需要用到的companion object...

2018-11-27 15:16:04 183

原创 LIstView的setSelection方法

通常,app中的数据都是以ListView的形式展示的。默认地,把“新”数据添加到数据列表的尾部。当想让某一个条目显示到最上面时,有一个方法et_video_title.setSelection(s.length)这个方法的作用就是将第position个item显示在listView的最上面一项,假如有一个ListView控件,其一次只能显示10个item,但现在有20个数据项,设置...

2018-11-27 11:08:26 250

原创 TextView EditText的addTextChangedListener方法

在textView和editText中,每当TextView的文本改变时,TextWatcher的那几个方法就会被调用。关注文字改变时的状态。et_video_title.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable) { ...

2018-11-27 11:04:43 2120

原创 获取application的实例

在android开发中,经常需要用到获取application的实例的地方1.在Application中public static NBApplication instance;public static NBApplication from() { return instance;}

2018-11-23 16:04:17 2544

原创 在一个类里调用另一个类的方法

其中的一种方法是,比如在CameraControllerDelegate类中调用ControllerPipActivity类中的方法可以先在CameraControllerDelegate中定义一个ControllerPipActivity类的实例private val controllerPipActivity: ControllerPipActivity get() ...

2018-11-23 10:10:53 4569

原创 主activity使用this,context,activity的方法

new新的acitivy在Activity中,需要使用到自身的情况的时候,有一下集中方法1,thisDialogHelper.showReRecord(this)2. contextDialogHelper.showReRecord(context)3. acitivtyDialogHelper.showReRecord(activity!!)4. presen...

2018-11-23 09:44:01 159

原创 has private access in INSTANCE

出现这种问题,记得在类的后面使用INSTANCE,然后再调用类里面的方法 例如:SensorsDataHelperUtils.INSTANCE.sensorsDataParamsWithHashMap(SensorsDataConstant.ScreenTitle.PAGE_ME,content,hashMap); ...

2018-11-21 15:37:22 4287

原创 在android 6.0动态权限问题无法获取READ_PHONE_STATE权限的SecurityException的问题

1. 在需要的地方写下面这行代码ActivityCompat.checkSelfPermission(UserHelper.context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED2. 在manifest里加入下面这个权限<uses-permission androi...

2018-11-16 14:18:59 2239

原创 RecyclerVeiw点击item的两种方式

在recyclerView中,经常要获取到到item的点击事件。获取这个事件有两种方法。1、第一种方法是定义一个onItemClickListener,在onBindViewHolder中设置item的点击事件,var onItemClickListener: ((stock: String) -> Unit)? = nulloverride fun onBindViewHol...

2018-10-24 10:51:19 289

原创 控件的invisible特性和父级控件的关系

在一个项目中,我设置了控件的invisible特性,最初的时候,我在全局的ConstraintLayout下面写了textView,可以顺利实现控件的显示和隐藏后来把textView用了一个ContraintLayout包裹一层,<android.support.constraint.ConstraintLayout android:id="@+id/contr...

2018-10-17 14:02:55 200

原创 Glide图片加载器

图片加载的功能Glide.with(context) .load(src) .into(iv_full_image)复杂的功能可以使用Glide.with(this) .load(url) .placeholder(R.drawable.loading) .error(R....

2018-10-16 20:50:28 302

原创 图片选择器

设置按钮或者其他控件的背景图片,点击可选择,设置的方法如下1、在布局中设置控件的背景图片,代码如下android:src="@drawable/camera_ic_controller_viewpoint_selector"2、在drawable里面写选择器的xml代码,如下<selector xmlns:android="http://schemas.android.c...

2018-10-16 20:45:19 143

空空如也

空空如也

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

TA关注的人

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