2024年最新不得不掌握的android知识——view及资源的加载小结,看完99%的人都学会了

最后

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

img

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当我们在抱怨环境,抱怨怀才不遇的时候,没有别的原因,一定是你做的还不够好!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

(3)WRAP_CONTENT,即包裹住组件就好。

(例子如下)


//创建一个线性布局

private LinearLayout Layout;

mLayout = (LinearLayout) findViewById(R.id.layout);

TextView textView = new TextView(Activity01.this);

textView.setText("Text View " );

//第一个参数为宽的设置,第二个参数为高的设置。

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.FILL_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT

);

//调用addView()方法增加一个TextView到线性布局中

mLayout.addView(textView, p);

//比较简单的一个例子

上述例子事实上和下面代码的执行效果是一样的:


private LinearLayout mLayout;

mLayout = (LinearLayout) findViewById(R.id.layout);

//现在我要往mLayout里边添加一个TextView

//你可能会想直接在布局文件里边配置不就O 了 那是 但是这里为了说明问题我们用代码实现

TextView textView = new TextView(Activity01.this);

textView.setText("Text View " );		

LayoutParams p = (LayoutParams)mLayout.getLayoutParams();

p.height=LinearLayout.LayoutParams.MATCH_PARENT;

p.width = LinearLayout.LayoutParams.WRAP_CONTENT;;

textView.setLayoutParams(p);

mLayout.addView(textView);

值得一提的是:setLayoutParams()其实是子对父的表达的,也就是父布局下的子控件要设置这句话。

更要理解的是: 如果某View被LinearLayout包含,则该View的setLayoutParams参数类型必须是LinearLayout.LayoutParams。原因在于LinearLayout(或其他继承自ViewGroup的layout,如:RelativeLayout)在进行递归布局的时候,LinearLayout会获取子View的LayoutParams,并强制转换成LinearLayout.LayoutParams。我们在xml布局里面设置控件的大小后显示出来就是在递归布局是采用上述做法。

总之,无论对特定控件(事实上也是View)通过其内部类对象来设置LayoutParams,其内部都是在绘制的过程中向其父View传递宽高的信息。于是可以下一个简单的结论:无论动态还是静态记载View来设置其宽高,都拿自己的LayoutParams信息告诉父View我要根据这样来打扮我自己,只不过动态就是自己亲口告诉父View要这样打扮,而静态就是父View来征求子View意见再打扮。

setContentView和inflate的区别

=========================

先看代码


public class MyInflate extends Activity{

    private TextView tv;

    public void OnCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);

        //setContentView(R.layout.main);

  

        LayoutInflater inflate = LayoutInflater.from(this);

        View view = inflate.inflate(R.layout.main,null);

        setContentView(view);

    }

}

上述注释掉的代码和没有注释掉的代码两种情况是相同的。区别在于

setContentView()一旦调用, layout就会立刻显示UI; 而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView()显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载,调用 inflate()从指定的XML资源文件中加载一个新的视图层次结构,具体解释如下

public View inflate(int Resourece,ViewGroup root)

reSource:View的layout的ID

root: 生成的层次结构的根视图

return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

图片资源的加载

=======

sd卡下的图片



 Bitmap imageBitmap = BitmapFactory.decodeFile(path)

res文件夹下的图片



//得到application对象

ApplicationInfo appInfo = getApplicationInfo();

//得到该图片的id(name 是该图片的名字,drawable 是该图片存放的目录,appInfo.packageName是应用程序的包)

int resID = getResources().getIdentifier(name, drawable, appInfo.packageName);

//代码如下

public Bitmap getRes(String name){

 ApplicationInfo appInfo = getApplicationInfo();

 int resID = getResources().getIdentifier(name, drawable, appInfo.packageName);

 return BitmapFactory.decodeResource(getResources(), resID);

}

src目录下的图片



 String path = com/xiangmu/test.png; //图片存放的路径

 InputStream is = getClassLoader().getResourceAsStream(path); //得到图片流

总结

最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

技术进阶之路很漫长,一起共勉吧~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

技术进阶之路很漫长,一起共勉吧~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android的Widget是指可以被放置在桌面或者其他应用中的小部件,比如常见的时钟、天气、日历等等。在Android中,Widget的布局可以使用XML文件来进行定义,与普通的布局定义类似,可以使用各种属性来设置Widget的样式和行为。 在Widget的XML布局文件中,可以使用View类中定义的许多属性来控制Widget的样式和行为,比如: 1. android:id:设置Widget的ID,可以在代码中通过findViewById()方法来获取对应的View对象。 2. android:layout_width、android:layout_height:设置Widget的宽度和高度,可以使用具体数值或者match_parent、wrap_content等特殊值。 3. android:layout_gravity:设置Widget在父布局中的对齐方式,比如center、left、right等等。 4. android:padding、android:paddingLeft、android:paddingRight等:设置Widget的内边距,用于控制Widget内部内容的显示位置。 5. android:background:设置Widget的背景颜色或者背景图片。 6. android:clickable、android:longClickable:设置Widget是否可以被点击或者长按。 7. android:focusable、android:focusableInTouchMode:设置Widget是否可以获取焦点,用于控制Widget是否可以响应键盘事件等。 8. android:visibility:设置Widget是否可见,可以使用值为visible、invisible、gone。 除了以上列出的属性之外,还有许多其他的属性可以用于控制Widget的样式和行为,具体可以查看Android官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值