
移动开发
android_bird_bird
大家一起探讨,一起进步,一起走上人生巅峰
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 加载Unity 3D后适配深色浅色遇到的坑
在做项目的时候,遇到一个很奇葩的问题,Activity的onConfigChanged()方法不走,这样深色浅色切换的时候,就不会适配到当前的view,有人说可以在资源文件适配好颜色或者背景的图片,但是咧,我加载的Unity的资源,需要给Unity 3d发出适配的通信。我看的android 12的源码,找到UIModeManagerService这个类,里面初始化的时候有注册系统深色浅色的信号。3.看到源码有注册深色浅色的监听,这个时候CV大法就起到作用了,试试呗,说不定中奖了咧。原创 2022-08-24 14:48:29 · 433 阅读 · 0 评论 -
继承AppCompatActivity的setContentView(R.layout.activity_main)内部流程
之前上一篇的写了继承Activity的setContentView(R.layout.activity_main)的过程,其实继承AppCompatActivity大体上是一样的流程,只是多出几个新的类:AppCompatDelegate 它的实现类AppCompatDelegateImpl拿到Window和PhoneWindow,DecorView,走一下AppCompatDelegateImpl.setContentView(View v)他的里面走了ensureSubDecor()这个方法又会走原创 2020-07-04 16:12:03 · 661 阅读 · 0 评论 -
View的绘制流程
面试中必问的问题说一下View的绘制流程,有时候说着总是说着忘记了,然后告知面试官有的我忘记了,面试官不计较也就过去了,但是要说的大概清楚,今晚总结一下,画个个图,然后分析Activity的布局绘制。 先上图吧:接下来我们进入继承Activity的类中:看到setContentView()的方法中(注意:继承AppCompatActivity的setContentView()方法里面的实现是有区别的,后续我会继续总结出AppCompatActivity的绘制)看下代码: getWi...原创 2020-06-25 23:01:13 · 264 阅读 · 0 评论 -
Android 组件化开发搭建
模块化的开发流程 首先我们建立一个主App,主app用来控制触发进入各个模块的入口,只是一个外壳,所有的逻辑在各个模块组件内部开发,各个模块以及外壳的app通信是采用阿里的路由框架进行的,稍后我会搭建一个可以各个模块的配置,以及运行环境。大家直接实战进行吧,在网上搜索一堆的模块化开发博客,倒不如自己亲自实践一下,原理都是一样,实践出真知吧。 首先我的AS是3...原创 2020-04-05 14:31:41 · 580 阅读 · 0 评论 -
设计模式--------策略模式
安卓开发过程中,我们会利用一些设计模式,常见的是单例的设计模式,今天当然不是说单例的设计模式,现在我们谈的是策略模式,好了,现在看流程图: 1. 首先我们定义一个接口:public interface IStrategy { public void operate();}2.实现这个接口:public class GivenGreenLight imp...原创 2019-01-21 21:09:30 · 153 阅读 · 0 评论 -
设计模式 ----------代理模式
代理模式分为静态代理和动态代理,个人认为是有个中间人做事情,就像现实中的人代理商一样,有人生产产品,有人专门代理去卖场品一样的。简单的说一下水浒中的西门庆的代理人 王婆,王婆是个中间体,负责代理潘金莲和西门庆的任务,好了,接下来撸代码:1.首先我们定义一个接口public interface KingWomen { //这种类型的女人能做什么事情呢? public v...原创 2019-01-24 20:30:01 · 203 阅读 · 0 评论 -
设计模式 ---------- 观察者模式
观察者模式在Android 中的应用还是很广泛的,类似EventBus,RxJava等,我们自己设计观察者者模式的时候要创建观察者和被观察者,而Java提供者了 Observable类和Observer接口,这样我们可以方便的去实现观察者模式。我们也可以自定义的的去模拟观察者模式,不适用Java提供的类。当然为了节省时间,我就直接使用提供类。 1.首先我们去创建一个被观察者(韩非子被李思监...原创 2019-01-24 00:44:50 · 151 阅读 · 0 评论 -
Android RxJava的初次使用
早就听说RxJava很牛X ,也一直想去研究一下,买了一些大佬的书,介绍了一下RxJava的基本操作,但是奈何作为小白,理解能力有限只能自己边敲边领会喽,先学会使用,再去了解源码,是我的学习方法之一。看的再多,敲不出代码的都是扯淡。好了,不扯犊子了,开始撸一把吧!一 . 首先,我们要差不多了解观察者模式吧,自己不理解的去看看EventBus的源码,大概就能搞得清楚。然后我们开始...原创 2018-11-29 17:51:46 · 174 阅读 · 0 评论 -
Android Toolbar,ViewPager,TabLayout,联合使用可以滑动的栏目
1.第一次联合使用Toolbar,ViewPager,TabLayout的时候,作为小白,卧槽,不会啊,这是什么鬼啊,看别人的博客复制粘贴啊,哎,走在CV的路上无法自拔啊,一句话,先入行的小白们都是要自己多敲代码,多练习。好了,不废话,上代码,最简单的形式最直白的简短的实现这个过程吧首先布局是这样子的<?xml version="1.0" encoding="utf-8"?...原创 2018-11-14 21:21:24 · 892 阅读 · 0 评论 -
软件盘弹出底部的View上顶
1.复制这段代码在onCreate中,或者在自己需要的地方View decorView = getWindow().getDecorView();View contentView = findViewById(Window.ID_ANDROID_CONTENT);decorView.getViewTreeObserver().addOnGlobalLayoutListener(getGl...原创 2019-04-02 15:49:30 · 214 阅读 · 0 评论 -
本地sp保存搜索记录,并且去重的,读取,删除记录的工具类
public class HistoryData { private final static String PREFERENCE_NAME = "superservice_ly"; private final static String SEARCH_HISTORY="linya_history"; // 保存搜索记录 public static void s...原创 2019-04-02 15:52:10 · 703 阅读 · 0 评论 -
Android 带横线的验证码输入框
1.自定义一个控件,继承RelativeLayoutpublic class VerifyCodeView extends RelativeLayout { private EditText editText; private TextView[] textViews; private static int MAX = 6; priv...原创 2019-04-21 13:27:03 · 4532 阅读 · 2 评论 -
Kotlin学习笔记四
控制语句1.条件分支简单分支首先“if……else……"的条件使用规则和java中的用法是一样的。我们在Kotlin中给某个文本赋值的时候可以直接用该语句进行赋值eg: tv.text = if(is_odd==true)"正确情况下的赋值是正值1"e...原创 2019-05-25 16:10:34 · 699 阅读 · 0 评论 -
Kotlin学习笔记一
当下谷歌将Android的开发语言由java转变为Kotlin语言,当然在国内两三年的时间内应该是没什么大的影响,但是随着以后的迁移,肯定还是慢慢的转到Kotlin 上,每周抽点时间学习一下并不是坏事,大家还是慢慢的适应市场吧。现在开干起来。 当前的AS版本3.4默认支持Kotlin的,你不在需要繁琐的kotlin环境的配置了,直接干。 首先,我们任何开发语言都是建一个...原创 2019-05-17 22:41:05 · 192 阅读 · 0 评论 -
Kotlin学习笔记二
上一章,我们只是完成最简单的工程,这一章,我们开始来学习其语法了一 . Kotlin和Java的基本数据类型比较基本数据类型名称 Kotlin Java 整型 Int int和Integer 长整型 Long long和Long 浮点型 Float float和Float 双精度 Double double和Dou...原创 2019-05-17 23:52:30 · 262 阅读 · 0 评论 -
Kotlin学习笔记三
一. 字符串字符串转换目录 Kotlin的转换方式 java的转换方式 字符串转整形 toInt Integer.parseInt(字符串变量) 字符串转长整形 toLong Long.parseLong(字符串变量) 字符串转浮点数 toFloat Float.parseFloat(字符串变量) 字符串转双精度 toDou...原创 2019-05-18 11:36:05 · 340 阅读 · 0 评论 -
Kotlin学习笔记五
函数的基本用法一. 申明方式 1. 这里我们举例java中的onCreate()方法: eg: override fun onCreate(savedInstanceState:Bunndle?){} ...原创 2019-06-02 16:10:55 · 210 阅读 · 0 评论 -
各种对话框的设置
1.首先主页布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:to...原创 2018-11-12 21:38:36 · 325 阅读 · 0 评论 -
Android Material Design FloatingActionButton的使用
这一行代码就可以让他显示了<android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" andro...原创 2018-11-13 20:59:02 · 155 阅读 · 0 评论 -
FragmentTabHost和fragment,viewpager,tablayout快速搭建一个底部导航栏的主界面
效果如下:首先,我们分为两层解决第一层是底部导航栏和fragment的一层,第二个我们把fragment里面加上fragment,viewpager,tablayout.第一层的 MainActivit的布局如下xml version="1.0" encoding="utf-8"?>LinearLayout xmlns:android="http://s原创 2018-01-22 15:13:32 · 415 阅读 · 0 评论 -
Android 出现编译通过无法安装的解决方式
升级到3.0后,项目导入后,编译通过了,但是居然不可以安装到模拟器上或者手机上,然后google一把,在Module's build.gradle 下的android下添加:splits { abi { enable true reset() include 'x86', 'armeabi-v7a' universalApk...原创 2018-03-27 14:13:57 · 1143 阅读 · 1 评论 -
图片转化为文件
# Camera-And-Album-Test下列代码,请求网络图片转换为bitmap,然后保存到指定文件夹,微信,QQ分享,要求缩略图不大于32kb压缩图片代码,使用了Glide来进行图片压缩处理Glide.get(ShopDetailsActivity.this).clearMemory(); Log.e("分享图片地址链接分享", "分享图片地址:...原创 2018-07-29 16:04:24 · 787 阅读 · 0 评论 -
7.0相机拍照后,保存图片到自定义的路径
1.布局是两个button一个是打开相机,一个是打开相册<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/re...原创 2018-08-04 20:47:04 · 2448 阅读 · 0 评论 -
单选按钮实现
1、创建一个Been ,记录状态public class DataBeen { public boolean isChecked = false;}2.适配器中操作点击事件,用来显示和隐藏public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHol...原创 2018-08-09 22:20:02 · 852 阅读 · 0 评论 -
带圆圈的进度条提示框
mProgressDialog = new ProgressDialog(this);mProgressDialog.setCancelable(false);mProgressDialog.setCanceledOnTouchOutside(false);mProgressDialog.setTitle("Scan Application");mProgressDialog.setMe...原创 2018-09-04 16:31:31 · 627 阅读 · 0 评论 -
展示dialog的,结束任务后,自动消失
//创建对话框private void showLoadProgress(){ mProgressDialog = new ProgressDialog(this); mProgressDialog.setCancelable(false); mProgressDialog.setCanceledOnTouchOutside(false); mProgressD...原创 2018-08-30 11:29:22 · 1932 阅读 · 0 评论 -
带输入框EditText的dialog
private void showDialog () { AlertDialog.Builder builder = new AlertDialog.Builder(SendMeActivity.this); LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); View view...原创 2018-09-05 16:17:24 · 3815 阅读 · 0 评论 -
使用Gzip进行简单压缩操作
public class GZIPcompress{ public static void main(string[] args ){ throws IOExecption if (args.length ==0){ System .out.println( "Usage : \nGZIPcompress file\n" + " tUses GZIP compr...原创 2018-09-05 21:33:27 · 628 阅读 · 0 评论 -
状态栏
public static void initStatusBar(Activity context, boolean isTint, boolean isDark, boolean isTransparent) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { return; } ...原创 2018-09-16 16:42:09 · 145 阅读 · 0 评论 -
Android Studio 黄油刀的最新使用方法
1.首先将module的删除apply plugin: 'android-apt'2.将之前的dependencies的依赖换成implementation 'com.jakewharton:butterknife:8.6.0'annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'3. 在AS的插件设置...原创 2018-09-17 22:25:51 · 1618 阅读 · 0 评论 -
运行时动态权限申请
简单明了,拿来就可以用,兄die,你指的拥有public class BaseActivity extends AppCompatActivity { private final int mRequestCode = 1024; private RequestPermissionCallBack mRe...原创 2018-10-12 16:14:48 · 330 阅读 · 0 评论 -
自定义渐变文字
自定义渐变文字当然要继承TextView了,撸完直接在资源文件中引用就OK了。public class GradientTextView extends android.support.v7.widget.AppCompatTextView { private int width; /** 移动距离*/ private int translateWidth; ...原创 2018-10-18 14:27:09 · 346 阅读 · 0 评论 -
Android Material Design
一.最近写好久没有写编辑栏,都忘记了属性了,写下来下次能直接看 二.现在简单的布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:...原创 2018-11-13 20:46:54 · 227 阅读 · 0 评论 -
Fragment与Activityz之间的传值
1.在Activity中的相关监听事件public void onclick(List showItems, int position) { Bundle bundle = new Bundle(); bundle.putString("text","子条目显示的内容"); startFragment(NewTweetFragment.class,"资讯详情原创 2017-08-06 00:30:59 · 393 阅读 · 0 评论