android 屏幕适配--------解决方案

2023-10-30

  

以下是Demo首页的预览图

 

demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MTczOTcz

一、细说 layout_weight
    目前最为推荐的Android多屏幕自适应解决方案。
    该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是 layout_width 的优先级;纵向布局中,决定的是 layout_height 的优先级。
    传统的layout_weight使用方法是将当前控件的layout_widthlayout_height都设置成fill_parent,这样就可以把控件的显示比例完全交给layout_weight;这样使用的话,就出现了layout_weight越小,显示比例越大的情况。不过对于2个控件还好,如果控件过多,且显示比例也不相同的时候,控制起来就比较麻烦了,毕竟反比不是那么好确定的。
    于是就有了现在最为流行的 0px设值法。看似让人难以理解的layout_height=0px的写法,结合layout_weight,却可以使控件成正比例显示,轻松解决了当前Android开发最为头疼的碎片化问题之一。
    先看下面的stylesstyle_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>  
 
<!-- 全屏幕拉伸-->
  <style name="layout_full">  
    <item name="android:layout_width">fill_parent</item>  
    <item name="android:layout_height">fill_parent</item>  
  </style>
   
<!-- 固定自身大小-->
  <style name="layout_wrap">  
    <item name="android:layout_width">wrap_content</item>  
    <item name="android:layout_height">wrap_content</item>  
  </style>
 
<!-- 横向分布-->
  <style name="layout_horizontal" parent="layout_full">  
    <item name="android:layout_width">0px</item>  
  </style> 
    
<!-- 纵向分布-->
  <style name="layout_vertical" parent="layout_full">  
    <item name="android:layout_height">0px</item>  
  </style> 
         
</resources>  


 

可以看到,layout_widthlayout_height两个属性被我封装成了4style
    根据实际布局情况,选用当中的一种,不需要自己设置,看过我前一个ActivityGroupDemo的同学应该非常熟悉了
    然后我的Demo的布局如下(weight_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/layout_full"
        android:orientation="vertical">
        <LinearLayout 
                style="@style/layout_vertical"
                android:layout_weight="1"
                android:orientation="horizontal">
                 <View
                         style="@style/layout_horizontal"
                         android:background="#aa0000"
                         android:layout_weight="1"/>
                 <View
                         style="@style/layout_horizontal"
                         android:background="#00aa00"
                         android:layout_weight="4"/>
                 <View
                         style="@style/layout_horizontal"
                         android:background="#0000aa"
                         android:layout_weight="3"/>
                 <View
                         style="@style/layout_horizontal"
                         android:background="#aaaaaa"
                         android:layout_weight="2"/>                 
        </LinearLayout> 
        <LinearLayout 
                style="@style/layout_vertical"
                android:layout_weight="2"
                android:orientation="vertical">
                <View
                         style="@style/layout_vertical"
                         android:background="#ffffff"
                         android:layout_weight="4"/>        
                 <View
                         style="@style/layout_vertical"
                         android:background="#aa0000"
                         android:layout_weight="3"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#00aa00"
                         android:layout_weight="2"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#0000aa"
                         android:layout_weight="1"/>
 
        </LinearLayout>
</LinearLayout>


整个界面布局看起来非常直观,只是嵌套的逻辑要自己理下。显示效果如下图,其中左面一个是480x800的界面,右面的是320x480的界面(后面的图也如此),可以看出显示比例和代码中完全一致,我就不多说了,大家对照下就能看出来了。

二、自定义尺寸法

 

    这个是我自己想出来的方法,可能是个比较笨的方法,所以没有多少人提过用这种方法解决自适应的问题。虽然这个方法缺点也很多,但有时候也是个不错的方法。
    先看下面这张图

 可以看到我定义了两套尺寸文件,我们可以看下其中一个文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="height_1_80">6px</dimen><dimen name="height_2_80">12px</dimen>
<dimen name="height_3_80">18px</dimen><dimen name="height_4_80">24px</dimen>
<dimen name="height_5_80">30px</dimen><dimen name="height_6_80">36px</dimen>
<dimen name="height_7_80">42px</dimen><dimen name="height_8_80">48px</dimen>
<dimen name="height_9_80">54px</dimen><dimen name="height_10_80">60px</dimen>
<dimen name="height_11_80">66px</dimen><dimen name="height_12_80">72px</dimen>
<dimen name="height_13_80">78px</dimen><dimen name="height_14_80">84px</dimen>
<dimen name="height_15_80">90px</dimen><dimen name="height_16_80">96px</dimen>
<dimen name="height_17_80">102px</dimen><dimen name="height_18_80">108px</dimen>
<dimen name="height_19_80">114px</dimen><dimen name="height_20_80">120px</dimen>
<dimen name="height_21_80">126px</dimen><dimen name="height_22_80">132px</dimen>
<dimen name="height_23_80">138px</dimen><dimen name="height_24_80">144px</dimen>
<dimen name="height_25_80">150px</dimen><dimen name="height_26_80">156px</dimen>
<dimen name="height_27_80">162px</dimen><dimen name="height_28_80">168px</dimen>
<dimen name="height_29_80">174px</dimen><dimen name="height_30_80">180px</dimen>
<dimen name="height_31_80">186px</dimen><dimen name="height_32_80">192px</dimen>
<dimen name="height_33_80">198px</dimen><dimen name="height_34_80">204px</dimen>
<dimen name="height_35_80">210px</dimen><dimen name="height_36_80">216px</dimen>
<dimen name="height_37_80">222px</dimen><dimen name="height_38_80">228px</dimen>
<dimen name="height_39_80">234px</dimen><dimen name="height_40_80">240px</dimen>
<dimen name="height_41_80">246px</dimen><dimen name="height_42_80">252px</dimen>
<dimen name="height_43_80">258px</dimen><dimen name="height_44_80">264px</dimen>
<dimen name="height_45_80">270px</dimen><dimen name="height_46_80">276px</dimen>
<dimen name="height_47_80">282px</dimen><dimen name="height_48_80">288px</dimen>
<dimen name="height_49_80">294px</dimen><dimen name="height_50_80">300px</dimen>
<dimen name="height_51_80">306px</dimen><dimen name="height_52_80">312px</dimen>
<dimen name="height_53_80">318px</dimen><dimen name="height_54_80">324px</dimen>
<dimen name="height_55_80">330px</dimen><dimen name="height_56_80">336px</dimen>
<dimen name="height_57_80">342px</dimen><dimen name="height_58_80">348px</dimen>
<dimen name="height_59_80">354px</dimen><dimen name="height_60_80">360px</dimen>
<dimen name="height_61_80">366px</dimen><dimen name="height_62_80">372px</dimen>
<dimen name="height_63_80">378px</dimen><dimen name="height_64_80">384px</dimen>
<dimen name="height_65_80">390px</dimen><dimen name="height_66_80">396px</dimen>
<dimen name="height_67_80">402px</dimen><dimen name="height_68_80">408px</dimen>
<dimen name="height_69_80">414px</dimen><dimen name="height_70_80">420px</dimen>
<dimen name="height_71_80">426px</dimen><dimen name="height_72_80">432px</dimen>
<dimen name="height_73_80">438px</dimen><dimen name="height_74_80">444px</dimen>
<dimen name="height_75_80">450px</dimen><dimen name="height_76_80">456px</dimen>
<dimen name="height_77_80">462px</dimen><dimen name="height_78_80">468px</dimen>
<dimen name="height_79_80">474px</dimen><dimen name="height_80_80">480px</dimen>   
</resources>


 

这个是 values-480x320 文件夹下 dimens_height.xml 文件中的代码,我把整个高度分成了 80等分,这是因为大部分屏幕的宽度或高度都是80的整数倍(个别特殊的除外),不同的等分在不同的分辨率中设定不同的尺寸值。
    由于每一套界面都要写一套,所以有些同学可能觉着不太好,不过这个写起来比较简单,而且以后也不用改,所以有时候也可以考虑用一下!
    再看我Demo的布局代码(dimen_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
         android:layout_height="fill_parent"
        android:orientation="vertical">
                 <View
                         android:layout_width="@dimen/width_76_80"
                         android:layout_height="@dimen/height_10_80"
                         android:background="#ffcccc"
                         android:layout_margin="@dimen/width_2_80"/>        
        <LinearLayout
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent">
                 <View
                         android:layout_width="@dimen/width_30_80"
                         android:layout_height="@dimen/height_50_80"
                         android:background="#ccccff"
                         android:layout_margin="@dimen/height_5_80"/>
                 <LinearLayout
                         android:layout_width="fill_parent"
                         android:layout_height="fill_parent"
                         android:orientation="vertical">        
                         <Button
                                 android:layout_width="@dimen/width_30_80"
                                 android:layout_height="@dimen/height_5_80"
                                 android:background="#ccffcc"
                                 android:layout_marginBottom="@dimen/height_1_80"
                                 android:text="5"/>
                         <Button
                                 android:layout_width="@dimen/width_30_80"
                                 android:layout_height="@dimen/height_10_80"
                                 android:background="#ccffcc"
                                 android:layout_marginBottom="@dimen/height_1_80"
                                 android:text="10"/>
                         <Button
                                 android:layout_width="@dimen/width_30_80"
                                 android:layout_height="@dimen/height_15_80"
                                 android:background="#ccffcc"
                                 android:layout_marginBottom="@dimen/height_1_80"
                                 android:text="15"/>
                         <Button
                                 android:layout_width="@dimen/width_30_80"
                                 android:layout_height="@dimen/height_20_80"
                                 android:background="#ccffcc"
                                 android:text="20"/>
                 </LinearLayout>        
         </LinearLayout>                
</LinearLayout>


以上是我写的统一的布局代码,来看下在两个不同分辨率的模拟器上的显示效果吧(大家注意我的代码中有margin这样的值也用到了自定义尺寸,如果这个margin使用layout_weight来控制的话,无疑要多嵌套一层线性布局,所以说没有一个方法是十全十美的,这第2个方法有时候用起来反而还要方便一些)

三、java代码中设置宽高度
    也许很多人会反对这种方法,因为即使是官方也是推荐使用xml的方式写布局。不过我们在这不会像Swing那样写那么多麻烦的布局代码,因为我们只是在代码中重新设定控件的宽高度而已,其他属性依然是交给xml布局文件的。这个方法其实是我跟同事偷学来的,虽然我不赞成这样的方法,但他确确实实也是解决屏幕自适应问题的方案之一,而且它没我想象的那么复杂,其实很简单。
    首先我们要做的是获取当前屏幕的宽高度,因为这个在后面要用到
    我们可以写两个静态变量用来保存当前屏幕的宽高度:
public class Constant {
        public static int displayWidth;  //屏幕宽度
        public static int displayHeight; //屏幕高度
}
然后在第一个 Activity 启动的时候,获取这两个值
  DisplayMetrics displayMetrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
                Constant.displayWidth = displayMetrics.widthPixels;
                Constant.displayHeight = displayMetrics.heightPixels
布局代码我们可以全都统一写成 wrap-content,其实写成什么都无所谓,因为这个值只是暂时的  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<Button  
        android:id="@+id/btn1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ffcccc"
    android:text="aaaaaaaa"/>
<Button  
        android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ccffcc"
    android:text="bbbbbbbbb"/>
<Button  
        android:id="@+id/btn3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ccccff"
    android:text="ccccccccc"/>
<Button  
        android:id="@+id/btn4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ffffcc"
    android:text="dddddddddddddddddd"/>   
</LinearLayout>
最后我们在 Activity onCreate 方法里这么做  
// 第一个按钮,宽度100%,高度10%
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                                LayoutParams.FILL_PARENT,
                                (int) (Constant.displayHeight * 0.1f + 0.5f));
                btn1.setLayoutParams(params);
                // 第二个按钮,宽度100%,高度30%
                LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
                                LayoutParams.FILL_PARENT,
                                (int) (Constant.displayHeight * 0.3f + 0.5f));
                btn2.setLayoutParams(params2);
                // 第三个按钮,宽度50%,高度20%
                LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(
                                (int) (Constant.displayWidth * 0.5f + 0.5f),
                                (int) (Constant.displayHeight * 0.2f + 0.5f));
                btn3.setLayoutParams(params3);
                // 第三个按钮,宽度70%,高度填满剩下的空间
                LinearLayout.LayoutParams params4 = new LinearLayout.LayoutParams(
                                (int) (Constant.displayWidth * 0.7f + 0.5f),
                                LayoutParams.FILL_PARENT);
                btn4.setLayoutParams(params4);

大家可以看到其实代码并不复杂,都能看得懂
    下面是效果显示图
多布局
    做为最后的方法,也是最后一个才会考虑的方法,那就是为不同的尺寸界面单独写布局。不到万不得已不要用这个方法,相信不少人和我一样都被逼着用过这个方法吧。需要说明的是,横竖屏切换使用不同布局也是用这个方法解决的;代码我就不上了,给大家看两张图吧,一个是1个布局的,一个是写了多布局的,大家一看就明白了

补充一下,写多个布局的时候,配置文件一定要加上这段配置代码,不然有时可能会出问题
    <supports-screens android:largeScreens="true"
                android:normalScreens="true" android:anyDensity="true" />


五、其他
    以上说的都是多个屏幕显示相同内容需要考虑的问题,还有一种是在不同的屏幕上显示内容不同的情况,其实这个问题我们往往是用滚动视图来解决的,也就是ScrowView;需要注意的是ScrowView中使用layout_weight是无效的,既然使用ScrowView了,就把它里面的控件的大小都设成固定的吧。
    此外关于图片的自适应问题,主要是2点,一个是9patch图,这个东西大家都要学会去做,不难;不过有些编译器在识别9patch图时会出这样那样的bug,像我的Eclipse就不认这个,而同一个9patch图在别的电脑上却是没问题的,
    第二个要说的是我曾经被困扰的一个问题,对于480x800  480x854这两个尺寸,他们显示同一个图片时,总有一个会拉伸(如果9patch可以解决的还好)。其实当初困扰我的是,这两个尺寸都是hdpi的,以为无法给这两个屏幕做不同的图片。后来无意中发现,图片可以和布局一样分多个尺寸的,而不仅仅是根据密度分,也就是说你可以写这样的文件夹drawable-hdpi-800x480drawable-hdpi-854x480,在它们里面放不同的图片,这样图片也能自适应了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android 屏幕适配--------解决方案 的相关文章

  • 品味树莓派:GPIO口定义、电气特性、启动状态等基础说明

    文章目录 目录 GPIO口定义 电气特性 启动状态 总结 目录 树莓派相比成品化的电脑来说有很多独立的GPIO口可供开发使用 可以方便的实现很多实物相关的功能 本文将对树莓派开放给用户的GPIO口的针脚定义 电气特性 启动状态等基础内容做个
  • svm多分类_数据挖掘算法——常用部分分类算法

    分类算法 分类是在一群已经知道类别标号的样本中 训练一种分类器 让其能够对某种未知的样本进行分类 分类算法属于一种有监督的学习 分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集 通过分析由属性描述的数据库元组来构造模型 分类
  • OpenSSL之EVP(一)——数据结构及源码结构介绍

    EVP简介 Openssl EVP提供了丰富的密码学中的各种函数 Openssl 中实现了各种对称算法 摘要算法以及签名 验签算法 EVP 函数将这些具体的算法进行了封装 EVP 主要封装了如下功能函数 1 实现了 base64 编解码 B
  • 新浪期货数据接口

    附注 对于期货数据 一直在寻找互联网上能够获得的比较好的数据源 最近发现了 新浪期货 的数据源 可以提供一分钟的期货K线数据 http hq sinajs cn list TICKER 对于国内期货连续 Ticker为正常Ticker加个0
  • Deep Residual Network

    先阅读者两篇写的比较好的博客 https blog csdn net dulingtingzi article details 79870486 https blog csdn net qq 31050167 article details
  • 高德地图绘制标记点,点击弹出弹框进入第三方地图软件

    需求 根据经纬度绘制标记点 点击标记点弹出弹框和底部按钮 点击顶部弹框进入二级界面 点击底部按钮弹出第三方地图软件选择页 实现跨进程跳转 效果图 项目是公司项目 只放出重要部分代码 final Marker marker1 aMap add
  • 计算机图形学入门(八)-着色(插值、高级纹理映射)

    目录 重心坐标 应用纹理 1 纹理分辨率很小 2 纹理分辨率过大 纹理的应用 颜色 环境贴图 Environment Map 法线贴图 凹凸贴图 位移贴图 三维纹理和三维噪声 着色信息的记录 学习视频来源 GAMES101 现代计算机图形学
  • 【操作系统】进程间通信的五种方式

    引言 1 进程对白 管道 记名管道 套接字 1 管道 2 虫洞 套接字 3 信号 4 信号旗语 信号量 5 进程拥抱 共享内存 引言 进程作为人类的发明 自然免不了脱离人类的习性 也有通信需求 如果进程之间不进行任何通信 那么进程所能完成的
  • 关于你STM32F407片内FLASH擦除失败的问题

    近日 发现STM32F407片内FLASH在写入数据时某些情况下会出现扇区擦除不成功的情况 使用正点原子的代码测试也出一样的情况 网上搜索也没找到较为理想的答案 只有一篇文章遇到同样问题 也是使用了一个不太可靠的办法 但是好在可以解决问题
  • DM8无图形界面安装与使用

    本机实验环境 centos7 9 参考文档 数据库安装 达梦云适配中心文档 dameng com https eco dameng com docs zh cn start install dm linux prepare html 1 系
  • “红山开源”创新论坛

    ChinaOSC 2022 红山开源 创新论坛将于2022年8月20日14 00 17 00在陕西省西安高新国际会议中心召开 红山开源 创新论坛重点聚焦战略科技领域相关需求 邀请知名院士和专家共同探讨战略科研任务开源众创组织模式和项目孵化方
  • 部署tomcat时出现No artifacts marked for deployment

    这种错误主要是因为没有设置导出包 解决方法 File gt Project Structure gt Artifacts 然后点击ok 然后记得apply ok 此时再回到问题所在 点击Fix即可 或者如下
  • JAVA中的正则表达式

    一 正则表达式的构成 1 字符类 abc a b c abc 任何字符 除了a b c a zA Z a到z或A到Z 两头的字母包含在内 范围 2 预定义字符类 任何字符 d 数字 0 9 D 非数字 0 9 s 空白字符 t n x0B
  • Python爬虫JS解密详解,学会直接破解80%的网站(二)!!!

    文章目录 前言 1 网页查看 2 JS解密过程 细心看哦 3 解密答案 完整代码 CSDN独家福利降临 Python爬虫JS解密详解 学会直接破解80 的网站 25个爬虫项目宝藏教程 你值得拥有 前言 Glidedsky这关的JS解密不同于
  • js rsa加密_Python实现RSA(jsencrypt)加密的两种方式

    RSA是一种常用加密算法 经常用在前端向后端传送密码的时候 一 通过运行rsa js文件加密 rsa js文件下载地址 https gitee com youchuanming rsa jsencrypt import urllib pur
  • 常见排序算法的js实现

    常见排序算法的js实现 冒泡排序 选择排序
  • git 笔记/常见命令/as的fetch,pull ,update project的区别/标签管理

    Git概念汇总 头 HEAD 头 HEAD HEAD类似一个 指针 指向当前活动 分支 的 最新版本 工作区 Workspace 就是在电脑里能看到的项目代码库目录 是我们搬砖的地方 在这里我们可以新增文件 修改文件内容 或删除文件 此时的
  • Java线程的5种状态及状态之间转换

    Java中的线程的生命周期大体可分为5种状态 1 新建 NEW 新创建了一个线程对象 2 可运行 RUNNABLE 线程对象创建后 其他线程 比如main线程 调用了该对象的start 方法 该状态的线程位于可运行线程池中 等待被线程调度选

随机推荐

  • 电子设计竞赛应该如何准备?

    全国大学生电子设计竞赛 当初我听到这个比赛的时候心中还有些胆怯 毕竟它含金量确实高 而且要想在全国去的好的名次 也确实不是一件容易的事情 但经过我大二一年的准备 我还是在自己的努力下 拿到了全国二等奖 现在都还清楚地记得但是得知我们的团队获
  • ChatGPT对高校人才培养模式的挑战与应对策略思考

    酷吗 输入指令后直接就能生成一大串代码 即使不懂相关技术也能玩转编程 这就是ChatGPT赋予你的 新能力 除了写代码 ChatGPT还能帮你执行各种五花八门的任务 AI工具如ChatGPT在行业中的广泛应用对于行业的人才结构和能力要求产生
  • 部署Vista – 第18部分:管理Windows部署服务

    原创作品 允许转载 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 240872 介绍如何管理和配置Windows部署服务服务器 本
  • ms project 入门_Microsoft Project 2010入门

    ms project 入门 Would you like to keep your projects on track and keep track of how time and resources are used Let s take
  • React直接渲染从后台传过来的标签

    在工作中使用react 遇到需要渲染从后台获取到的标签语言 发现直接放在react中是不能解析标签语言的 解决办法如下 var content strong content strong 假设content是从接口获取到的数据 react
  • 大数据shell基础

    一 常用shell命令 1 管道命令 命令1 命令2 命令1的输入作为命令2的输入 2 抓取命令 grep命令 可以使用正则表达式来过滤 3 查找命令 find命令 选项参数 type name size perm 如果上面这个不行可以在
  • 蓝桥杯 java a组_2019年第十届蓝桥杯国赛总结(JavaA组)

    JavaA组国二 可以报销了 JA死亡之组可不是盖的 rank12的排名还是拿不到国一啊 只有五个 出成绩的一刻波澜不惊 毕竟去年有国一了不慌哈哈哈 不过对我来说这个结果还算意料之外吧 毕竟大三考研狗 这次再也不敢说蓝桥杯水了 十周年十道题
  • EMC的RS和CS和RI,CI一样吗是属于EMS 吗

    EMC Electromagnetic Compatibility 是指电子设备在电磁环境中能够正常工作 同时不对周围的其他设备和系统产生不可接受的电磁干扰的能力 在EMC设计中 RS Radiated Susceptibility 和CS
  • stm32电机驱动调试平台pid调试开发ros底盘里程计脉冲速度监测MPR

    MPRO 用于调试ros小车底盘 pid开发学学 电机驱动板反馈脉冲等数据的上位机工具 欢迎下载试用 MPRO搭载stm32单片机驱动GA370编码电机 实现PID速度调节 转向控制 实体图如下 采用杜邦线加模块设计 简单易用 可实现插拔
  • JLINK在ADS中的调试心得

    JLINK在ADS中的调试心得 分类 ARM 2010 01 03 19 39 138人阅读 评论 0 收藏 举报 分享 JLINK在ADS下调试心得 前两天一个客户用jlink在ADS来调试LPC2148总报错 这个错误我之前在调试LPC
  • 【论文精读】HumanNeRF

    目录 Abstract 1 Introduction 2 Related work Human specific rendering Neural radiance fields Human specific neural renderin
  • Java:抽象类和接口

    文章目录 抽象类 什么是抽象类 抽象类的特性 为什么会有抽象类这种东西 接口 什么是接口 接口的特性 匿名内部类 拓展 实现多个接口 接口间的继承 三个重要的接口 Comparable接口 Comparator接口 Clonable接口 浅
  • 关于 Cannot read property 'length' of null 报错的解决办法

    最近在搞前端的时候突然报了Cannot read property length of null的错 一开始都是在前端调试错 发现解决不了问题 后来发现如果你所查找的数据条数为0的时候 后端返回给前端是null 此时必然报错Cannot r
  • CityEngine三维建模几个常见问题解决方法(1)

    CityEngine被Esri收购以后 大踏步进入GIS三维建模领域 由于CityEngine独有的基于规则建模 使得GIS三维建模效率大增 不过不是规则就可以一刀切 解决所有问题的 有时我们还是要做这样或那样的一些处理才能顺利的使用规则达
  • Mysql8.0开启远程访问权限

    use mysql 登录后选择mysql数据库 select host user password from user 查看当前root对应host是否为 update user set host where user root 更新 se
  • 基于YOLOv5+Hough变换的目标检测和车道线检测

    这学期做的一个大作业 实现了对行驶过程中车辆 行人以及车道线的检测 1 B站视频演示 2 Github仓库链接 文章目录 一 实现效果 二 环境配置 三 基于YOLOv5的目标检测 四 基于Hough变换的车道线检测 4 1 前置工作 Ca
  • 鸿蒙3部曲先看哪部,“隋唐三部曲”“鸿蒙三部曲”“斗罗四部曲”谁才是网文巅峰之作...

    原标题 隋唐三部曲 鸿蒙三部曲 斗罗四部曲 谁才是网文巅峰之作 从网络小说诞生的那一刻起 续集就是一个绕不过去的话题 如同电视剧一样 一部网络小说红了之后 它的原作者很多时候会忍不住开发它的续集 形成一个系列 然后再现网文界 小编今天就给大
  • java开发转测试开发经历

    1 背景 我从毕业一直做java开发已经两年半了 到目前为止也挺喜欢开发的 2 为什么想转行 想转行是由多方面考虑的 一 我的开发技能没达标 只能找到外包里的开发工作 二 开发前景对女生不够友好 难以获得认可 个人感受 至于第一点其实也可以
  • 减少数据打拍翻转的低功耗设计方法

    在流水设计中 时常会遇到对某一路数据打多拍从而对齐另一路数据的场景 而除了最后一拍是真正需要的 中间的打拍从功耗上来看是有点浪费的 举个例子 对8bit in data打4拍 总共需要用到4个8bit寄存器 常规打拍方法传输4个数据 D0
  • android 屏幕适配--------解决方案

    以下是Demo首页的预览图 demo下载 http www eoeandroid com forum php mod attachment aid NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MT