自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ViewModel实现原理

ViewModel复用,实际是ViewModelStore的复用;ViewModelStore使用HashMap存取了ViewModel对象大概如下图所示:

2021-07-17 10:39:15 243 1

原创 沉浸式实现步骤笔记

在values、values-v19、values-v21的style.xml都设置一个 Translucent System Bar 风格的Themevalues<style name="TranslucentTheme" parent="MaterialAppTheme"> <item name="windowNoTitle">true</item> </style> <style name="Materia.

2020-12-05 16:05:32 212

原创 ViewDragHelper.CallBack中方法回调

//view是否可以拖动 override fun tryCaptureView(child: View, pointerId: Int): Boolean { return true } //水平方向滑动距离Return the magnitude of a draggable child view's horizontal range of motion in pixels.This method should return 0 for views that c...

2020-11-09 17:00:54 294

原创 OnDragListener事件回调执行时机

override fun onDrag(v: View, event: DragEvent): Boolean { when (event.action) { //开始拖拽 DragEvent.ACTION_DRAG_STARTED -> { Log.i("khs", "onDrag: ACTION_DRAG_STARTED") } //拖拽点进入view的边界内部 DragEvent.AC

2020-11-09 16:36:28 280

原创 多点触控

View的事件序列:ACTION_DOWN - ACTION_MOVE - ACTION_UP(ACTION_CANCEL)ACTION_DOWN - ACTION_POINTER_DOWN - ACTION_MOVE - ACTION_POINTER_UP - ACTION_UPPointerId对于每个按下的点是不变的event.getPointerId(index)PointerIndex会随着手指按下与抬起发声改变每次按下手指,就让新手指接管事件当抬起手指为

2020-11-09 11:54:24 242 1

原创 Android 蓝牙扫描与手机位置权限是否打开相关

记录下蓝牙连接与位置权限的问题:首先,在蓝牙APP开发的时候需要位置权限:<!-- If your app targets Android 9 or lower, you can declare ACCESS_COARSE_LOCATION instead. --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />问题:有些手机(红米)在设置界面中关掉位置信息,AP

2020-09-29 17:05:29 3182 1

原创 MotionLayout中与动画有关设置

MotionLayout属性定义:[ … ] 指定位置[ …] 指定属性<KeyPositionmotion:motionTarget="@id/targetPath" //运动视图motion:framePosition=“percentage” //1 到 99 之间的整数,何时到达此指定点motion:keyPositionType="type“ //指定如何解释 percentX 和 percentY 值,motion:percentX=“xOffset

2020-09-13 11:12:41 325

原创 App启动流程

2020-05-22 17:11:12 139

原创 Toast在部分厂家手机上会显示APP名称解决方法

Toast显示APP名称解决过程:接客户反馈在Toast中会显示APP的名称,需要删除;从网上找到解决方法将创建修改为: Toast toast = Toast.makeText(getContext(), "", Toast.LENGTH_SHORT); toast.setText("显示内容"); toast.show();测试后觉得没有问题,发给客户确认...

2020-04-30 10:41:44 679

原创 setContentView()与LayoutInflater.inflate()关系

在Activity中调用setContentView(R.layout.activity_main)方法,就会进入AppCompatActivity中的setContentView(@LayoutRes int layoutResID)public void setContentView(@LayoutRes int layoutResID) { this.getDelegate...

2020-02-27 14:44:26 420

原创 RecyclerView回收复用实现学习笔记

今天继续启舰的自定义控件三部曲视图篇(八)——RecyclerView系列之五回收复用实现方式二的学习,记录下自己的理解。自定义控件三部曲视图篇(八)——RecyclerView系列之五回收复用实现方式二直接Copy实现原理:在这里,我们主要替换掉在上节中移动item所用的offsetChildrenVertical(-travel);函数,既然要将它弃用,那我们就只能自己布局每个item了...

2020-02-24 14:54:37 522

原创 RecyclerView实现回收复用学习笔记

学习启舰的自定义控件三部曲视图篇(七)——RecyclerView系列之四实现回收复用,记录一下自己的理解,方便以后复习查看。回收复用主要有两部分:(直接copy)第一:在onLayoutChildren初始布局时:使用 detachAndScrapAttachedViews(recycler)将所有的可见HolderView剥离一屏中能放几个item就获取几个HolderView,撑满初...

2020-02-22 21:24:41 1360

原创 Scroller弹性滑动原理

Scroller的典型使用方法:Scroller mScroller = new Scroller(mContext);private void smoothScrollTo(int destX, int destY) { int scrollX = getScrollX(); int scrollY = getScrollY(); int deltaX = dest...

2020-02-20 14:58:59 508

原创 Can not perform this action after onSaveInstanceState:问题分析

问题描述:当手机进入黑屏的时候,APP蓝牙断开连接,APP收到蓝牙断开连接,通过EventBus方式调用commit方法让UI界面跳转到蓝牙连接界面,此时会报Can not perform this action after onSaveInstanceState:错误,且不会正常跳转到指定界面,从网上找到解决方法是:用commit()替换成commitAllowingState()方法,问题解...

2020-02-20 09:20:51 445

原创 CoordinatorLayout + Behavior + NestedScrollView联动原理解析

CoordinatorLayout中重写了generateLayoutParams方法,返回LayoutParams;@Override public LayoutParams generateLayoutParams(AttributeSet attrs) { return new LayoutParams(getContext(), attrs); }...

2020-02-18 15:50:01 709

原创 ViewModel学习

**ViewModelProviders.of(this).get(UserModel.class);**调用of(activity, null); 传入的factory为null@NonNull @MainThread public static ViewModelProvider of(@NonNull FragmentActivity activity) { ...

2020-01-07 10:49:04 199

原创 状态模式学习笔记

定义:当一个对象的内在状态发生改变时,允许改变其行为。其UML图如下:Context:环境类,定义客户感兴趣的接口,维护一个State子类的实例,这个实例定义了对象的当前状态。State:抽象状态类或接口,定义一个或一组接口,表示该状态下的行为;ConstreteStateA与ConstreteStateB:具体状态类,实现了抽象状态类的接口,从而达到了不同状态下的不同行为。已登录为例...

2019-12-31 15:53:06 163

原创 ArgbEvaluator的使用

功能:计算颜色渐变的类。构造函数:ArgbEvaluator();方法:Object evaluate(float fraction, Object startValue, Object endValue)参数fraction,取值为0.0f ~ 1.0f,表示从开始颜色到结束颜色的比重;参数startValue:开始颜色参数endValue:结束颜色返回值:返回表示中间颜色的整数例...

2019-12-10 09:08:26 632

原创 TabLayout与ViewPager使用是TabLayout标题不显示

使用如下两步后早餐TabLayout的标题没有显示mTablayout.addTab(mTablayout.newTab().setText(titles.get(i)));mTablayout.setupWithViewPager(mViewPager);protected void onCreate(Bundle savedInstanceState) { super...

2019-12-06 15:50:53 185

原创 LayoutAnimation动画学习笔记

LayoutAnimation作用于ViewGroup,为ViewGroup指定一个动画,则ViewGroup中的每个子元素都会有相同的动画;在xml中创建LayoutAnimation如下:<?xml version="1.0" encoding="utf-8"?><layoutAnimation xmlns:android="http://schemas.android...

2019-08-23 14:01:42 226

原创 ViewPager.PageTransformer学习笔记

对于安卓官网的PageTransformer实例,看了很久,终于明白了一点,并记录于此首先对于ViewPager的使用分为三步1.在Activity的布局文件中加入ViewPager;2.创建一个类,继承自FragmentStatePagerAdapter,并实现getItem()与getCount()方法;3.将Adapter与ViewPager绑定;对于ViewPager之间切换使用...

2019-08-16 17:17:56 264

原创 ActivityOptionsCompat 转场动画学习笔记

静态方法makeCustomAnimation(Context context, int enterResId, int exitResId)makeScaleUpAnimation(View source, int startX, int startY, int startWidth, int startHeight)makeSceneTransitionAnimation(Activit...

2019-08-15 17:33:08 367

原创 蓝牙开发学习笔记

设置蓝牙1.获取BluetoothAdapter(自身蓝牙适配器)BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getdefaultAdapter();if (mBluetoothAdapter == null){ //表示手机不支持蓝牙;}2.启用蓝牙//如果手机蓝牙没有打开,就会跳转到手机系统蓝牙界面if ...

2019-08-08 10:12:42 343

原创 蓝牙音箱音频输出切换

蓝牙音箱音频输出切换问题:蓝牙音箱APP开发,当将蓝牙音箱切换到其他音源(U盘或TF卡)播放的时候,早成手机播放的声音即不在手机端出来,同时在音箱端也没有声音,通过以下强制切换手机端音频输出解决问题!AudioManager mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);...

2019-07-20 16:51:41 4182

空空如也

空空如也

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

TA关注的人

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