一个便签项目的源码解读
来源:互联网 发布:淘宝购物车业务流程图 编辑:程序博客网 时间:2024/05/21 05:06
项目地址
项目是一个memo便签app,使用了sqlite作为数据库,功能比较简单。记录下查看源码学到的东西。
主界面(MyActivity)
MyActivity中使用
public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu_actions, menu); return super.onCreateOptionsMenu(menu); }
创建了选项菜单,然后通过
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add: Intent intent = new Intent(this, EditNoteActivity.class); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } }
将点击增加菜单时的操作与EditNoteActivity(编辑activity)关联起来。
另外,通过在OnCreate()中调用
private void initActionBar() { SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); tintManager.setNavigationBarTintEnabled(true); tintManager.setTintColor(Color.parseColor(getString(R.string.actionbar_color))); ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg)); } }
设置了沉浸式状态栏。在res/drawable/actionbar_bg.xml中定义了状态栏的属性。SystemBarTintManager类的依赖是在app的build.gradle中定义的“compile ‘com.readystatesoftware.systembartint:systembartint:1.0.3’”
在布局homepage.xml中以静态形式嵌入了NotesListFragment
NotesListFragment
该Fragment实现了便签项的列表显示,在onActivityCreated()中首先调用initListView()从数据库中将数据存入数据源mNoteArray中,然后给Listview设置适配器,最后调用适配器的notifyDataSetChanged()刷新数据。
在适配器的ItemClickListener()设置了编辑、删除时的操作。其中,编辑时会调用EditNoteActivity。
EditNoteActivity
该activity同样使用了沉浸式状态栏,不多说。还使用了动态创建Fragment的方法
mEditeNoteFragment = EditeNoteFragment.newInstance(); if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, mEditeNoteFragment) .commit(); }
与EditeNoteFragment关联起来。
EditeNoteFragment
其中的onActivityCreated()中通过getActivity().getIntent().getExtras()获取从NotesListFragment中传给EditNoteActivity的参数,以判断是编辑还是新增。如果是编辑,通过异步任务QueryNoteTask获取数据库中的数据,完成后在onPostExecute()中设置界面空间的内容。
这里说一下getContentResolver(),通过getContentResolver()可以得到当前应用的 ContentResolver实例,定义在AndroidManifest.xml文件中。
其他
NoteDbHelper继承自SQLiteOpenHelper,提供了数据库自动创建、升级(未实现)功能。
NoteDatabase是数据库创建的模板类
NoteDbProvider提供了与数据库进行增删改查的功能
NoteItem类是Listview中数据项的数据结构
完毕
- 一个便签项目的源码解读
- Android轻量级便签应用项目源码
- 一个小小的移动web版便签
- 一个简单的android便签app
- react-redux-router 一个完整项目解读(附源码)
- 项目源码解读 absControl
- 项目源码解读 baseControl
- 项目源码解读dimensionControl
- 小米开源便签Notes-源码研究(2)-定时提醒的便签
- 桌面便签程序的实现详解和源码 (上)
- 桌面便签程序的实现详解和源码 (下)
- Geek 便签小项目
- 便签小项目总结
- 用安卓写一个便签程序
- 我们组做的便签项目删除部分
- Webpack&React (五) 实现一个简单的便签应用
- struts2源码的解读
- struts2源码的解读 .
- Android之DOM生成XML文件
- css代码
- WAMP配置允许外网访问、绑定域名
- Myeclipse新建Maven Profile时报错:Could not resolve archetype org.apache.maven.archetypes .
- MultiDex工作原理分析和优化方案
- 一个便签项目的源码解读
- C#学习——数据绑定与Converter的设置
- Android O Developer Preview
- esotalk 调整语言为中文
- org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'xx'的问题
- Git使用
- NDK快速入门(android studio)
- GCJ Round 1A 2017 题解
- 【HTML5学习笔记】4:分组元素的使用