• 1. Android资源管理主讲:王亭
  • 2. 资源文件的作用资源文件是在应用程序中使用到的并在编译过程中被打包进应用程序的附加文件。 Android支持多种不同的文件,包括XML、PNG和JPEG等。
  • 3. 创建资源文件Android应用程序的资源可分为两大类: 无法直接访问的原生资源,保存在asset目录下。 可通过R资源清单类访问的文件,保存在res目录下。
  • 4. 创建资源文件目录存放的资源/res/anim/定义补间动画的XML文件。/res/color/定义不同状态下颜色列表的XML文件。/res/drawable/该目录下存放各种位图文件,如png, 9.png, jpg, gif 等。/res/layout/存放各种用户界面的布局文件。/res/menu/存放为应用程序定义各种菜单的资源,包括选项菜单、子菜单、上下文菜单。/res/raw/存放任意类型的资源文件。 使用Resources.getDrawable(id)可以获得资源类型。/res/values/存放各种简单值得xml文件,这些简单值包括字符串值,整数值,颜色值,数组值。
  • 5. 使用资源文件在Java代码中使用资源文件。 []R.. 在XML代码中使用资源文件。 @[:]/
  • 6. 使用字符串、颜色、尺寸资源颜色值的定义: #RGB:分别指定红、绿、蓝三原色的值(0~F)来代表颜色。 #ARGB指定红、绿、蓝及透明度(0~F)来代表颜色。 #RRGGBB分别指定红、绿、蓝三原色的值(00~FF)来代表颜色。 #AARRGGBB指定红、绿、蓝及透明度(00~FF)来代表颜色。
  • 7. 使用字符串、颜色、尺寸资源定义字符串资源 StyleDemo StyleDemo 定义颜色资源 #006400 #FFE4C4
  • 8. 使用字符串、颜色、尺寸资源定义尺寸资源 28sp 1in 使用字符串、颜色、尺寸资源
  • 9. 使用数组资源Android允许将数组定义在资源文件中。 数组资源存放在/res/values/arrays.xml文件中。 使用字符串数组 使用字符串数组 使用字符串数组
  • 10. 使用数组资源在Java代码中调用数组资源: String[] texts=getResources().getStringArray(R.array.test);
  • 11. 使用Drawable资源使用图片资源 图片资源是最简单的drawable资源,我们只要把图片放入/res/drawable-xxx/目录下,Android SDK就会在编译时自动加载该图片,并在R文件中生成该资源文件的索引。
  • 12. 使用Drawable资源使用StateListDrawable资源 StateListDrawable用于组织多个图片对象, StateListDrawable所显示的图片会随着组件的状态不同而不同。
  • 13. StateListDrawable的语法格式:
  • 14. 使用Drawable资源StateListDrawable支持的状态: 支持的状态代表组件的状态android:state_pressed代表组件是否被按下android:state_focused代表组件是否获得焦点android:state_enable代表组件是否可用android:state_checked代表组件是否被勾选android:state_selected代表组件是否被选中
  • 15. 使用Menu资源定义Menu资源
  • 16. 使用Menu资源使用Menu资源 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater mInflater = getMenuInflater(); mInflater.inflate(R.menu.mymenu, menu); return true;// 返回false就不会显示菜单 }
  • 17. 使用Style资源Style资源用于指定某些组件大致相似的样式。比如字体、颜色、背景色。 定义style.xml文件 #FF0000 20sp bold
  • 18. 使用Style资源在布局文件中使用定义好的style文件
  • 19. 使用ContentProvider共享数据
  • 20. ContentProvider简介ContentProvider是Android系统四大组件之一。 ContentProvider是不同程序之间交换数据的标准API。 ContentProvider以Uri的形式对外提供数据,允许其他应用程序访问和修改数据。
  • 21. 创建与配置ContentProvider创建ContentProvider : 定义一个继承自ContentProvider的子类。 在AndroidManifest.xml中配置ContentProvider :
  • 22. 使用ContentProvider当我们向系统注册了ContentProvider之后,其他应用程序就可以通过注册时的Uri访问该ContentProvider所提供的数据。 继承自ContentProvider的子类要实现如下回调方法: public boolean onCreate():当程序第一次访问ContentProvider时被调用。
  • 23. 使用ContentProviderpublic Uri insert(Uri uri, ContentValues values):根据Uri插入values对应的数据。 public int delete(Uri uri, String where, String[] whereArgs):根据Uri删除where条件对应的全部数据。 public int update(Uri uri, ContentValues values, String where, String[] whereArgs) :根据Uri修改where条件对应的全部数据。
  • 24. 使用ContentProviderpublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) :根据Uri查询出selection条件匹配的全部数据,其中projection存放的列名,指出所要查询的数据列。
  • 25. Uri简介Android里的Uri形式如下: content:// com.ultrawise.contentprovider.mycontentprovider/words 它可以分为三个部分: content:// Android系统规定。 com.ultrawise.contentprovider.mycontentprovider/ ContentProvider的标识,注册时使用的authorities。
  • 26. Uri简介words 资源部分(数据部分),访问者需要访问不同的资源,这个部分是动态改变的。
  • 27. 使用ContentResolver操作数据ContentProvider的作用是提供数据,其他程序使用ContentResolver来操作ContentProvider所提供的数据。 可以通过Context提供的getContentResolver方法来获取ContentResolver对象。
  • 28. 使用ContentResolver操作数据通过调用ContentResolver的如下方法来操作数据: insert(Uri uri, ContentValues values):向Uri对应的ContentProvider中插入values对应的数据。 delete(Uri uri, String where, String[] whereArgs):删除Uri对应的ContentProvider中where条件对应的全部数据。
  • 29. 使用ContentResolver操作数据update(Uri uri, ContentValues values, String where, String[] whereArgs) :修改Uri对应的ContentProvider中where条件对应的全部数据。 query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) :查询Uri对应的ContentProvider中selection条件匹配的全部数据。
  • 30. 谢谢大家!