一些Android 基础知识

这篇博客介绍了Android的基础知识,包括如何去除顶部标题实现全屏,解释了setBackgroundResource和setBackgroundDrawable的区别,详细说明了如何在不同状态下设置控件背景,以及探讨了DisplayMetrics在获取手机屏幕大小中的应用。此外,文章还讨论了Context和getApplicationContext()在Android开发中的正确使用和生命周期差异。
摘要由CSDN通过智能技术生成

1、 去掉顶部的title

requestWindowFeature(Window.FEATURE_NO_TITLE);
requestWindowFeature(featrueId),它的功能是启用窗体的扩展特性
对于requestWindowFeature具体介绍,请参考下面博文: Android
应用程序窗体显示状态操作(requestWindowFeature()的应用)

2、 全屏:去掉顶部所有包括title

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 WindowManager.LayoutParams.FLAG_FULLSCREEN);

3、setBackgroundResource,setBackgroundDrawable以及android:background

很多网友不知道View类提供的setBackgroundDrawable和setBackgroundResource的区别是什么,同时 Android View类很多子类比如TextView、ImageView中都有这些方法,同时还有一些类似setImageDrawable、setImageBitmap和setImageResource()这些方法的不同之处。
一、setBackgroundXXX的用处,设置这个View背景。
  setBackgroundDrawable 的参数为Drawable对象,
  setBackgroundColor 的参数为Color对象,比如说Color.Red为红色,或Color.rgb(255,0,0) 来制定一个红色
  setBackgroundResource 的参数为资源ID,比如说R.drawable.icon
二、对于ImageView类有类似 setImageXXX
  道理同上,setImageBitmap的参数为Bitmap对象,同时ImageView还支持矩阵对象,比如setImageMatrix的参数为Matrix对象。
三、有关Bitmap和Drawable之间的转换可以查看Bitmap和Drawable相互转换方法

我们以ImageButton为例,设置其背景有三种不同的方式:
(1).静态方式,在xml文件中定义:android:background=”@drawable/icon”
我们要区别android:background和android:src的区别,android:src是针对ImageButton有的,
是ImageButton资源图片,代表了该控件,而android:background是背景,可以是图片,还可以是
“#FF0000”等颜色控制
(2).在代码中用setBackgroundResource设置:

ibt.setBackgroundResource(R.drawable.icon)

(3).用setBackgroundDrawable设置:

Resources rs = getResources();
Drawable dr = rs.getDrawable(R.drawable.icon);
ibt.setBackgroundDrawable(dr);

上面静态和动态的方法,我们还可以联想到控件不同状态的处理,比如普通状态,焦点状态,按下状态,我们都可以设置不同状态下不同的控件背景。
静态方法就是android:background=”@drawable/son_button_style”,而son_button_style是在drawable下的xml文件,通过selector来定义不同状态下的背景显示。
动态方法就是监听控件的onClick事件和onFocus事件,在事件处理中通过不同状态调用setBackgroundResource,setBackgroundDrawable来设置不同背景。

对于处理控件不同状态时候显示不同背景还有字体颜色的处理等等,我们都可以在DV6300-T的MENU菜单界面处理看到,可以参考相关源码,也可以查看下面的博文:
修改Button选中,按下后字体的颜色
Android自定义控件外观

4、取得手机屏幕大小DisplayMetrics的应用

DisplayMetrics metrics;
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.widthPixels  //屏幕分辨率宽 metrics.heightPixels //屏幕分辨率高
metrics.density     //屏幕密度

5、Android学习—— context 和 getApplicationContext()

在Android中常常会遇到与context有关的内容:
浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的 参数就是一个context,在这里我们传入的是this,那么这个this究竟指的是什么东东呢? 这里的this指的是Activity.this,是这个语句所在的Activity的this,是这个Activity 的上下文。网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。 AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应 该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传 入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它 的生命周期了。 所以,在这里我们只能使用Activity的this。

*new AlertDialog.Builder(getApplicationContext())时发生错误:
E/AndroidRuntime(5844): android.view.WindowManager$BadTokenException: Unable to add window – token null is not for an application
于是查了查:
getApplicationContext() 生命周期是整个应用,应用摧毁它才摧毁 Activity.this的context属于activity ,activity 摧毁他就摧毁
activity.this要返回一个activity,而getApplicationContext()就不一定返回一个activity*

getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值