二哈侠
InfoQ签约作者,阿里云专家博主,51CTO专家博主,华为云云享专家,嵌入式开发工程师,AE工程师。
座右铭:向着太阳,追逐梦想!
展开
-
电源噪声的起因及危害
开关噪声给信号传输带来的影响更为显著,由于地引线和平面存在寄生电感,在开关电流的作用下,会造成一定的电压波动,也就是说器件的参考地已经不再保持零电平,这样,在驱动端(见图3-a),本来要发送的低电平会出现相应的噪声波形,相位和地面噪声相同,而对于开关信号波形来说,会因为地噪声的影响导致信号的下降沿变缓;非理想电源阻抗影响(图1-b);空板,板材是普通的FR4,电源和地之间的间距为4.5Mils,随着频率的增加,电源阻抗是不断变化的,尤其是在并联谐振效应显著的时候,电源阻抗也随之明显增加(见图4)。原创 2024-03-28 22:27:48 · 54 阅读 · 0 评论 -
Socket学习网络基础
Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。:可以理解为数据通道,主要功能是如何在不可靠的物理线路上进行数据的可靠传递,改层作用包括:物理地址寻址,数据的成帧,流量控制,数据检错以及重发等!原创 2023-04-17 22:14:40 · 312 阅读 · 0 评论 -
BroadcastReceiver牛刀小试
Broadcast直译广播,我们举个形象的例子来帮我理解下BroadcastReceiver,记得以前读书的时候,每个班级都会有一个挂在墙上的大喇叭,用来广播一些通知,比如,开学要去搬书,广播:"每个班级找几个同学教务处拿书",发出这个广播后,所有同学都会在同一时刻收到这条广播通知,收到,但不是每个同学都会去搬书,一般去搬书的都是班里的"大力士",这群"大力士"接到这条广播后就会动身去把书搬回可是!嗯,上面我们都是接收系统的广播,系统发我们收,我们不能老这么被动,总得主动点是吧!下面我们就来看下怎么实现!原创 2023-04-14 21:44:59 · 295 阅读 · 0 评论 -
侧滑菜单的简单使用
官方给我们提供的一个侧滑菜单控件,和上一节的ViewPager一样,3.0以后引入,低版本使用它,需要v4兼容包,说到侧滑,相信很多人都用过github上的SlidingMenu,不过好像有两个版本,一个是单独的,另一个需要依赖另一个开源项目:ActionBarSherlock;既然Google为我们提供了这个控件,为何不用咧,而且在Material Design设计规范中,随处可见的很多侧滑菜单的动画效果,大都可以通过Toolbar +DrawerLayout来实现。原创 2023-04-10 21:13:57 · 457 阅读 · 0 评论 -
Activity登堂入室
下面是自己查阅资料,看了下一点源码的归纳所得,如果哪写错了欢迎指出!原创 2023-04-08 22:07:05 · 325 阅读 · 0 评论 -
Service进阶
在onStartCommand中开辟一条事务线程,用于处理一些定时逻辑。原创 2023-04-06 21:59:50 · 309 阅读 · 1 评论 -
Service初涉
本节开始我们继续来学习Android中的第二个组件:Service(服务),开始本节内容!原创 2023-04-04 22:41:34 · 400 阅读 · 0 评论 -
Activity登堂入室
打个牵强的比喻:我们可以把这三个类分别堪称:画家,画布,画笔画出的东西;画家通过画笔(原创 2023-04-03 20:53:04 · 234 阅读 · 0 评论 -
DrawerLayout(官方侧滑菜单)的简单使用
官方给我们提供的一个侧滑菜单控件,和上一节的ViewPager一样,3.0以后引入,低版本使用它,需要v4兼容包,说到侧滑,相信很多人都用过github上的SlidingMenu,不过好像有两个版本,一个是单独的,另一个需要依赖另一个开源项目:ActionBarSherlock;既然Google为我们提供了这个控件,为何不用咧,而且在Material Design设计规范中,随处可见的很多侧滑菜单的动画效果,大都可以通过Toolbar +DrawerLayout来实现。原创 2023-04-02 16:33:58 · 491 阅读 · 0 评论 -
【创作赢红包】Activity初窥门径
/ 定义一个变量,来标识是否退出@Overrideif (!isExit) {Toast.makeText(getApplicationContext(), "再按一次退出程序",// 利用handler延迟发送更改状态信息} else {exit(this);原创 2023-04-01 22:25:37 · 349 阅读 · 0 评论 -
构建一个可复用的自定义BaseAdapter
*** 获取当前条目*//*** 获取条目位置*//*** 设置文字*//*** 设置图片*/} else {/*** 设置点击监听*//*** 设置可见*//*** 设置标签*///其他方法可自行扩展我们创建新的BaseAdapter的时候,实现这个方法就好,另外,别忘了把我们自定义 的BaseAdapter改成abstact抽象的!原创 2023-03-30 21:19:31 · 187 阅读 · 0 评论 -
构建一个可复用的自定义BaseAdapter
*** 获取当前条目*//*** 获取条目位置*//*** 设置文字*//*** 设置图片*/} else {/*** 设置点击监听*//*** 设置可见*//*** 设置标签*///其他方法可自行扩展我们创建新的BaseAdapter的时候,实现这个方法就好,另外,别忘了把我们自定义 的BaseAdapter改成abstact抽象的!原创 2023-03-29 21:50:17 · 329 阅读 · 0 评论 -
BaseAdapter优化
学习ListView的优化很重要,而本节针对的是BaseAdapter的优化,优化的两点有,复用convertView 以及使用ViewHolder重用组件,不用每次都findViewById,我们具体通过代码来体会吧。原创 2023-03-28 20:46:10 · 95 阅读 · 0 评论 -
ListView简单实用
先看看我们要实现的效果图:/***//***/@Override@Override@Override@Override最后是@OverridemData.add(new Animal("狗说", "你是狗么?mData.add(new Animal("牛说", "你是牛么?mData.add(new Animal("鸭说", "你是鸭么?mData.add(new Animal("鱼说", "你是鱼么?原创 2023-03-27 22:12:33 · 256 阅读 · 0 评论 -
ListView简单实用
先看看我们要实现的效果图:/***//***/@Override@Override@Override@Override最后是@OverridemData.add(new Animal("狗说", "你是狗么?mData.add(new Animal("牛说", "你是牛么?mData.add(new Animal("鸭说", "你是鸭么?mData.add(new Animal("鱼说", "你是鱼么?原创 2023-03-26 20:12:11 · 378 阅读 · 0 评论 -
Adapter基础讲解
这一节我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单来说就是:将各种数据以合适的形式显示到view上,提供 给用户看!原创 2023-03-25 20:35:34 · 467 阅读 · 0 评论 -
Date & Time组件(上)
本节给大家带来的是Android给我们提供的显示时间的几个控件,他们分别是: TextClock,AnalogClock,Chronometer,另外其实还有个过时的DigitalClock就不讲解了!好的,开始本节内容!原创 2023-03-23 21:24:33 · 273 阅读 · 0 评论 -
ScrollView(滚动条)
我们可以看到类的结构如下:原来是一个FrameLayout的容器,不过在他的基础上添加了滚动,允许显示的比实际多的内容!另外,只能够往里面放置,可以是单一的组件,又或者一个布局包裹着的复杂的层次结构!一般对于可能显示不完的情况,我们可以直接在布局的外层套上一个: ScrollView或者HorizontalScrollView!就这么简单~!原创 2023-03-22 20:38:59 · 655 阅读 · 0 评论 -
RatingBar(星级评分条)
RatingBar(星级评分条)也非常简单,相信在某宝, 买过东西的对这个应该不陌生,收到卖家的包裹,里面很多时候会有个小纸片,五星好评返还多少元这样, 而评分的时候就可以用到我们这个星级评分条了。原创 2023-03-21 21:05:10 · 246 阅读 · 0 评论 -
SeekBar(拖动条)
这里用到一个layer-list的drawable资源!接着要说下SeekBar的事件了,原创 2023-03-20 22:04:39 · 487 阅读 · 0 评论 -
ProgressBar(进度条)
运行效果图:实现代码:/***///目标值,想改多少就改多少init();init();init();//完成相关参数初始化//重写测量大小的onMeasure方法和绘制View的核心方法onDraw()@Override@OverrideinitRect();//自己计算} else {就是这么简单~原创 2023-03-19 21:04:38 · 340 阅读 · 0 评论 -
ImageView(图像视图)
本节介绍的UI基础控件是:ImageView(图像视图),就是用来显示图像的一个View或者说控件!本节讲解的内容如下:ImageView的src属性和blackground的区别;adjustViewBounds设置图像缩放时是否按长宽比scaleType设置缩放类型最简单的绘制圆形的ImageView。原创 2023-03-18 22:29:33 · 564 阅读 · 1 评论 -
Button(按钮)与ImageButton(图像按钮)
StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector >,我们只需要将Button的background属性设置为该drawable资源即可轻松实现,按下 按钮时不同的按钮颜色或背景!drawable:引用的Drawable位图,我们可以把他放到最前面,就表示组件的正常状态~:是否获得焦点:是否获得窗口焦点:控件是否可用:控件可否被勾选,eg:checkbox:控件是否被勾选:控件是否被选择,针对有滚轮的情况。原创 2023-03-17 21:28:27 · 1656 阅读 · 0 评论 -
TextView(文本框)详解
从本节开始我们来一个个讲解Android中的UI控件,本节给大家带来的UI控件是:TextView(文本框),用于显示文本的一个控件,另外声明一点,我不是翻译API文档,不会一个个属性的去扣,只学实际开发中常用的,有用的,大家遇到感觉到陌生的属性可以查询对应的API!device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。原创 2023-03-16 23:00:03 · 325 阅读 · 0 评论 -
TableLayout(表格布局)
相信学过HTML的朋友都知道,我们可以通过< table >< tr >< td >就可以生成一个HTML的表格,而Android中也允许我们使用表格的方式来排列组件,就是行与列的方式,就说我们这节的TableLayout!但却不像我们后面会讲到的Android 4.0后引入的GridLayout(网格)布局一样,直接就可以设置多少行与多少列!原创 2023-03-15 21:26:07 · 533 阅读 · 0 评论 -
RelativeLayout(相对布局)
在上一节中我们对LinearLayout进行了详细的解析,LinearLayout也是我们用的比较多的一个布局,我们更多的时候更钟情于他的weight(权重)属性,等比例划分,对屏幕适配还是帮助蛮大的;原创 2023-03-14 22:12:27 · 248 阅读 · 0 评论 -
LinearLayout(线性布局)
本节开始讲Android中的布局,今天我们要讲解的就是第一个布局,LinearLayout(线性布局),我们屏幕适配的使用用的比较多的就是LinearLayout的weight(权重属性),在这一节里,我们会详细地解析LinearLayout,包括一些基本的属性,Weight属性的使用,以及比例如何计算,另外还会说下一个用的比较少的属性:android:divider绘制下划线!代码里面明明有three的啊,还设置了3,而1和2的比例也不对耶,1:2:3却变成了2:1:0,怎么会这样呢?原创 2023-03-13 21:18:48 · 240 阅读 · 0 评论 -
反编译APK获取代码&资源
"反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压。我们随便找了一个apk进行解压:我们可以打开res目录,获取里面的图片素材。原创 2023-03-12 21:34:38 · 651 阅读 · 0 评论 -
界面原型设计
引用锤子科技视觉设计总监——罗子雄在重庆TEDx活动上说的一小段话:每当我们看到一些美妙的设计的时候,很多人心里面会有一种冲动,这种冲动会让你们想去创造一些新的东西,创造一些美妙的事物。我们常说用户体验用户体验,用户使用你的软件,第一个会接触的是什么?没错,,简称UI,对于用户而言,最直观,给用户留下第一印像的是往往是程序的界面,而非功能!人,总喜欢美的东西,对吧?假如一样的功能,决定用户取向的,往往是UI!精美的UI!当然还有一些贴心的人性化操作等!原创 2023-03-11 21:06:44 · 490 阅读 · 0 评论 -
Android程序签名打包
Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我们调试运行时到手机上时,是AS会自动用默认的密钥和证书来进行签名;但是我们实际发布编译时,则不会自动签名,这个时候我们就需要进行手动签名了!如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。原创 2023-03-10 20:47:34 · 260 阅读 · 0 评论 -
Genymotion模拟器安装
点击yes后会来到选择avd版本的界面,因为这上面什么设备都没有,我们需要连接到官网获取各种版本的系统与硬件设备等,点击下方的connect,输入我们已经激活的账号密码:邮箱与密码。不过貌似白天是可以的,虽然有点慢,晚上的话笔者试了N次都是下载不了其他版本的设备!答:在下载设备驱动时其实已经下载好对应的sdk了,但是如果你不喜欢的话可以打开setting--ADB-->选择Eclpise的sdk路径。好了,avd已经创建完毕,接着把他运行起来,开机也只是十几秒的事,很赞!操作起来超流畅啊,有木有?原创 2023-03-09 22:51:37 · 543 阅读 · 0 评论 -
Android Studio开发APP
Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。Android Studio的用法还是比较简单的,目前我也是刚用Android Studio,后续还会写一篇更深入一点的文章,这里大家琢磨琢磨,暂时能跑起程序,知道在哪里写代码,怎么看Logcat就可以了!提供执行各种操作的工具,包括运行应用和启动 Android 工具。原创 2023-03-08 21:28:18 · 4064 阅读 · 0 评论 -
Android开发环境搭建
现在主流的Android开发环境有:现在国内大部分开发人员还是使用的Eclipse,而谷歌宣布不再更新ADT后,并且官网也去掉了集成Android开发环境的Eclipse下载链接,各种现象都表示开发者最后都终将过渡到Android Studio,当然这段过渡时间会很长,但如果你是刚学Android的话建议直接冲Android Studio着手;而且很多优秀的开源项目都是基于Android Studio!原创 2023-03-07 21:41:11 · 950 阅读 · 0 评论 -
Android的基础介绍
Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。原创 2023-03-06 20:27:19 · 1927 阅读 · 0 评论 -
APP自动化效果测试工具
uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。它本来是Google提供的一个自动化测试的Java库,后来发展了python-uiautomator2,封装了谷歌自带的uiautomator测试框架,提供便利的python接口,用它可以很便捷的编写python脚本来实现app的自动化测试。uiautomator2 提供了点击、长按、输入文本、滑动、拖拽、截屏等方法,能够模拟用户的各种动作。原创 2022-10-25 20:08:18 · 2912 阅读 · 0 评论