
Android开发
一杯刘
从外包到字节,努力总会有回报的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
头条安卓面试总结 (2019 / 04)
计划更新博客,结果到现在因为一直在找工作,一篇没写,不过因为这次机会确实太难得了,不得不记录一下面试机会是在 boss 直聘上,有个头条小哥哥勾搭我投简历,我当时精虫上脑就是干,投了,所以就有这次的面试了,因为我在大连,所以两轮面试都是视频面试,答案我也不写了,因为挺多都没答上来,大家自己百度学习就好 ps.技术问题不分先后,我记不住顺序了一面:介绍下自己描述下当前项目,然后根据你的描述...原创 2019-05-03 15:43:53 · 1813 阅读 · 3 评论 -
Android工程上传Jcenter (Bintray)
首先登陆这个https://bintray.com 网站,如果你是个人开发者的话,要记得选择个人账户注册,注册邮箱注意不能是163邮箱…注册成功后,新建一个仓库,然后回到studio,把你想传的工程上传到github上,之后开始配置studio这里我们用 novoda 插件帮助我们上传在根 build.gradle 中配置:buildscript { //省略 dependencies { //省略 classpath 'com.novoda:bin原创 2020-06-08 22:58:20 · 530 阅读 · 2 评论 -
安卓事件分发机制万能结论,再也不用担心记不住各种情况了!
先说几点既定结论,下面根据不同情况通过结论进行分析前提条件:Activity中包含ViewGroup,ViewGroup中包含View公理:事件分发流程: dispatchTouchEvent -> onInterceptTouchEvent -> onTouchEvent结论:只有在 ViewGroup接收down事件或者子view能处理down事件时,会走 onInterceptTouchEvent如果ViewGroup决定拦截一个事件(DOWN,MOVE或者UP),仅代表可能原创 2020-05-24 16:43:48 · 313 阅读 · 0 评论 -
EventBus源码赏析
EventBus使用简介常用的使用方式如下:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...原创 2020-04-22 16:37:24 · 189 阅读 · 0 评论 -
Android自定义view的onMeasure参数MeasureSpec含义分析
前言说起Android的自定义view,各位老油条肯定都不陌生了,我也是在最近重温《安卓开发艺术探索》的时候才发现的这个问题,**onMeasure的参数 MeasureSpec 到底表示了自身的属性还是父view的属性?**我问了身边的小伙伴,他们的回答都不对或者很模棱两可,所以我特意记录一下,希望小伙伴们能有个准确地认识。结论先行先说下结论,onMeasure是测量view或viewGr...原创 2020-04-22 16:27:33 · 762 阅读 · 2 评论 -
GreenDao3.0配置加使用(转)
GreenDao3.0转载 2017-01-26 11:38:23 · 372 阅读 · 0 评论 -
bitmap大小以及压缩的常用三种方法
bitmap大小以及压缩的常用三种方法1.质量压缩2.采样率压缩3.矩阵压缩原创 2017-01-24 16:34:20 · 2919 阅读 · 0 评论 -
截屏的各种实现(全屏or长截屏)
全屏截图+ViewGroup的长截图原创 2017-01-19 17:28:01 · 5202 阅读 · 0 评论 -
drawText函数详解(转)
drawText函数详解转载 2017-01-18 18:02:06 · 2790 阅读 · 0 评论 -
studio 常用插件汇总
studio 常用插件汇总转载 2017-01-17 11:18:45 · 770 阅读 · 0 评论 -
解决首次启动程序白屏时间过长问题
解决首次启动程序白屏时间过长问题重点是: <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item>即可转载 2017-01-17 09:34:30 · 956 阅读 · 2 评论 -
ValueAnimator和自定义Interpolator的配合使用
ValueAnimator animator = ValueAnimator.ofInt(0,50); animator.setDuration(300); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override原创 2017-01-12 21:50:14 · 731 阅读 · 0 评论 -
通知栏,状态栏的隐藏与各种细节(坑)
5.0以上通知栏透明getWindow().requestFeature(Window.FEATURE_NO_TITLE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlag原创 2017-01-12 17:47:47 · 4077 阅读 · 0 评论 -
XML解析方法(Pull和Sax以及DOM)
Pull方式解析 与 Sax方式解析原创 2016-10-05 02:02:13 · 357 阅读 · 0 评论 -
安卓自制文件管理器需要注意的地方
可以根据不同的文件的后缀名找到不同的文件类型:可以用一个二维数组把一些常用的文件类型封装起来。如下:private final String[][] MIME_MapTable = { // {后缀名, MIME类型} { ".3gp", "video/3gpp" }, { ".apk", "application/vnd.android.packa转载 2016-09-22 23:30:28 · 608 阅读 · 0 评论 -
Broadcast Receiver总结
广播的分类:标准广播和有序广播标准广播:一个发送,全村接收有序广播:一个发送,挨家传递(可被截断abortBroadcast())注册方式:动态注册和静态注册动态注册(灵活,但需要程序启动才能收到广播): 1.新建IntentFilter类,通过addAction添加action的值 2.新建MyBroadcastRecriver类继承BroadcastReceiver,并重写onRec原创 2016-09-20 23:53:49 · 422 阅读 · 0 评论 -
Notifiction使用总结
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); send_notice = (Button) findViewById(R.id.send_not原创 2016-09-17 21:44:12 · 696 阅读 · 0 评论 -
SeekBar总结
进度条代码,一个普通的normalSeekBar 和自定义的customSeekBar :public class SeekBarActivity extends BaseActivity { SeekBar normalSeekBar,customSeekBar; TextView textView_1,textView_2; @Override protected原创 2016-09-11 22:44:17 · 411 阅读 · 0 评论 -
Menu总结
public class MemuActivity extends AppCompatActivity { TextView textView; //menu的Id final static int MENU_FIRST = Menu.FIRST; final static int MENU_SECOND = Menu.FIRST + 1; final stat原创 2016-09-11 22:36:34 · 320 阅读 · 0 评论 -
Gallery与ImageSwitcher总结
Gallery(画廊)已经过时了,但是不影响使用 本例是Gallery与ImageSwitcher结合使用案例上代码先public class GalleryActivity extends BaseActivity implements ViewSwitcher.ViewFactory { //数据源 private int[] imageRes = new int[]{R.mip原创 2016-09-11 22:05:57 · 415 阅读 · 0 评论 -
ViewFlipper用法总结
上代码先:public class ViewFlipperActivity extends BaseActivity { float startX;//用于手势滑动判断坐标 ViewFlipper viewFlipper; int[] resId = new int[]{R.mipmap.a1, R.mipmap.a2, R.mipmap.a3, R.mipmap.a4};//原创 2016-09-11 21:47:25 · 571 阅读 · 0 评论 -
ViewPager相关总结
Layout文件有view1,view2,view3,view4四个xmlpublic class ViewPagerActivity extends BaseActivity { private List<String> tabList; private List<View> viewList; View view1,view2,view3,view4; ViewP原创 2016-09-06 22:47:58 · 337 阅读 · 0 评论 -
WebView相关总结
效果图: public class WebViewActivity extends BaseActivity { ProgressDialog dialog; EditText wangZhi; Button fangWen; private WebView webView; @Override protected void onCreate(Bun原创 2016-09-06 22:40:37 · 290 阅读 · 0 评论 -
Spinner控件:下拉列表
一言不合上代码: public class SpinnerActivity extends BaseActivity { private TextView textView,textView1; private Spinner spinner_1; private ArrayAdapter<String> adapter_1; private List<String>原创 2016-09-05 22:55:34 · 549 阅读 · 0 评论 -
TimePicker与DatePicker以及TimePickerDialog和DatePickerDialog
先来DatePicker,一言不合就上代码: Calendar calendar = getInstance(); year = calendar.get(Calendar.YEAR); mouth = calendar.get(Calendar.MONTH); day = calendar.get(Calendar.DAY_OF_MON原创 2016-09-05 22:40:44 · 707 阅读 · 0 评论 -
GridView控件
Gridview使用(仿手机桌面)原创 2016-09-05 22:22:35 · 583 阅读 · 0 评论 -
【已解决】Android Studio下,gradle project sync failed 错误
Android studio下突然报错gradle project sync failed.Basic functionality(e.g.editing,debugging) will not work properly.解决方案:进入项目目录下,找到 gradle\wrapper\gradle-wrapper.properties 文件,记事本打开,内容如下:`#Sun Sep 04 23:原创 2016-09-04 23:45:47 · 122597 阅读 · 0 评论