Android Studio新建一个模块(Module)是一个独立运行的App


基础控件——TextView


使用LayoutInflater类的inflate方法从xml布局文件中解析出Java对象
总体从xml布局文件中解析出View容器对象,然后再执行
setContentView(R.layout.ll);
在此容器中可以任意添加自定义控件,具有更高的灵活性


控件的图文混排,即文字的上下左右都可以旋转图片,进行图文混排

drawableTop 

 drawableBottom 

 drawableLeft(drawableStart) 

 drawableRight(drawableEnd)






控件引用Drawable资源,自定义Drawable资源,需要在drawble目录下新建一个Drawble资源文件。


1.Shape
使用XML文件来描述形状,标签shape下面的属性定义:
corners:圆角属性
gradient:渐变属性
padding:填充属性
size:尺寸大小
solid:背景属性
stroke:线条属性


2.Selector
选择器(Selector)本身也是Drawable对象,某种操作会根据不同的情况显示不同的效果。


案例:华清选课App,模仿微信的操作界面。




图片做控件的背景,控件的大小和形状就会和图片一致


使用Photoshop做一个按钮的背景,颜色是#00C9B0,普通图片作为背景,在长宽不同比例的拉伸下,圆角变形。此时需要用到九宫格图片,即9patch图片。
它本身也是png图片,但在外面的边缘各增加一个像素点用来自定义拉伸的区域,文字填充区域。
SDK中提供一个叫draw9patch的工具,用来编辑九宫格图片。


见操作。


左边和上边画线的投影交集部分为可拉伸区域
下边和右边画线的投影交集部分为文字显示区域


求得设备屏幕的宽、高像素以及分辨率:

int width = getResources().getDisplayMetrics().widthPixels; 

         int height = getResources().getDisplayMetrics().heightPixels; 

         int dpi = getResources().getDisplayMetrics().densityDpi;



样式与主题
将控件的属性成批量地设置某种固定的值,作用于单个控件叫样式使用style属性名,
作用于Application和Activity的属性上叫主题,使用theme属性名。


国际化
显示的文字以系统设置的语言为标准,在不同的语言环境中,显示不同的文字。
例如:中国中文,新建一个目录values-zh,将strings.xml文件拷贝其中,将所有的常量字符串汉化;当系统设置为默认语言为简体中文时,界面就会以中文显示。

LANG=zh_CN.UTF-8 

 LANG=en_US.UTF-8 

 /etc/sysconfig/i18n




横屏与竖屏
专门针对横屏与竖屏的资源配置,可以将资源目录加上后缀。
在Manifest中,<activity>标签指定
            android:screenOrientation="portrait" ----》竖屏
            android:screenOrientation="landscape"----》横屏
在屏幕方向发生变化时,会销毁界面并重建,销毁以前把已经输入的数据保存在缓存中,屏幕变化后数据自动恢复,数据的保存与恢复是与控件的ID相绑定。
横屏与竖屏都可以单独地设计界面。后缀加上-land -port  例如:layout-land(横屏)和layout-port(竖屏)


屏幕旋转机制

判断屏幕是横屏或是竖屏 

 public static boolean isScreenOriatationPortrait(Context context) 

  {   

       return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;  

  }  



 代码动态设置横屏与竖屏 

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

 //横屏设置 



 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

 //竖屏设置 



 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 

 //默认设置




在屏幕旋转时,默认行为系统在销毁界面之前自动调用onSaveInstanceState方法保存用户输入的数据。而在重新创建界面时,在执行onCreate()方法时,传入的参数Bundle savedInstanceState对象就不为null