-
UI美化(设置背景颜色,选中时的笔记背景颜色变换)
-
更换背景
- UI美化(设置背景颜色,选中时的便签背景颜色变换)
NotePad源码中的应用,只有简单的笔记黑色主题。本功能对此进行扩展,给予notePad一个新的主题
- 在AndroidManifest.xml中增加一句代码将NotePad换为白色主题
<activity
android:name=“.NoteSearch”
android:label=“NoteSearch”
android:theme=“@android:style/Theme.Holo.Light”
- 让笔记的每条笔记都具有自己的背景颜色,所以选择在数据库中增加一个字段“color”用于存放每条笔记的背景颜色。先在NotePad.java 中设置颜色编号
public static final String COLUMN_NAME_BACK_COLOR = “color”;
public static final int DEFAULT_COLOR = 0;
public static final int YELLOW_COLOR = 1;
public static final int BLUE_COLOR = 2;
public static final int GREEN_COLOR = 3;
public static final int RED_COLOR = 4;
- 在NotePadProvider.java中修改创建数据库的语句
(如果数据库已创建需要将数据库删除重新运行一遍程序)
public void onCreate(SQLiteDatabase db) {
db.execSQL(“CREATE TABLE " + NotePad.Notes.TABLE_NAME + " (”
-
NotePad.Notes._ID + " INTEGER PRIMARY KEY,"
-
NotePad.Notes.COLUMN_NAME_TITLE + " TEXT,"
-
NotePad.Notes.COLUMN_NAME_NOTE + " TEXT,"
-
NotePad.Notes.COLUMN_NAME_CREATE_DATE + " INTEGER,"
-
NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE + " INTEGER,"
-
NotePad.Notes.COLUMN_NAME_BACK_COLOR + " INTEGER" //数据库增加color属性
-
“);”);
}
- 实例化和设置静态对象的块
static{
·····
// add Maps “color” to “color”
sNotesProjectionMap.put(
NotePad.Notes.COLUMN_NAME_BACK_COLOR,
NotePad.Notes.COLUMN_NAME_BACK_COLOR);
·····
}
- 增加创建新笔记时需要执行的语句,给每条笔记设置默认背景颜色
// 笔记背景默认为白色
if (values.containsKey(NotePad.Notes.COLUMN_NAME_BACK_COLOR) == false) {
values.put(NotePad.Notes.COLUMN_NAME_BACK_COLOR, NotePad.Notes.DEFAULT_COLOR);
}
- 笔记列表显示时从数据库中读取color的代码,所以在NoteList和NoteSearch中的PROJECTION添加color属性
private static final String[] PROJECTION = new String[] {
NotePad.Notes._ID, // 0
NotePad.Notes.COLUMN_NAME_TITLE, // 1
//扩展 显示时间戳
NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE,
//扩展 显示笔记背景颜色
NotePad.Notes.COLUMN_NAME_BACK_COLOR,
};
- 使用bindView将颜色填充到ListView。新建一个MyCursorAdapter继承SimpleCursorAdapter
public class MyCursorAdapter extends SimpleCursorAdapter {
public MyCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public void bindView(View view, Context context, Cursor cursor){
super.bindView(view, context, cursor);
//从数据库中读取的先前存入的笔记背景颜色的编码,再设置笔记的背景颜色
int x = cursor.getInt(cursor.getColumnIndex(NotePad.Notes.COLUMN_NAME_BACK_COLOR));
switch (x){
case NotePad.Notes.DEFAULT_COLOR:
view.setBackgroundColor(Color.rgb(255, 255, 255));
break;
case NotePad.Notes.YELLOW_COLOR:
view.setBackgroundColor(Color.rgb(247, 216, 133));
break;
case NotePad.Notes.BLUE_COLOR:
view.setBackgroundColor(Color.rgb(165, 202, 237));
break;
case NotePad.Notes.GREEN_COLOR:
view.setBackgroundColor(Color.rgb(161, 214, 174));
break;
case NotePad.Notes.RED_COLOR:
view.setBackgroundColor(Color.rgb(244, 149, 133));
break;
default:
view.setBackgroundColor(Color.rgb(255, 255, 255));
break;
}
}
}
- 将NoteList和NoteSearch里的适配器改为MyCursorAdapter
MyCursorAdapter adapter
= new MyCursorAdapter(
this,
R.layout.noteslist_item,
cursor,
dataColumns,
viewIDs
);
- 新建colors.xml和color_select.xml。选中时的笔记时笔记的背景颜色会改变
#be96df
<item android:drawable=“@color/color1”
android:state_pressed=“true”/>
- 在notelist_item.xml里为控件添加选择器
android:background=“@drawable/color_select”
- 模拟器截图
- 更换背景颜色
- 为了编辑笔记的时候可以显示背景颜色(显示时能查询到color数据),在NoteEditor.java中增加color属性
private static final String[] PROJECTION =
new String[] {
NotePad.Notes._ID,
NotePad.Notes.COLUMN_NAME_TITLE,
NotePad.Notes.COLUMN_NAME_NOTE,
//增加 背景颜色
NotePad.Notes.COLUMN_NAME_BACK_COLOR
};
- 在onResume()中增加设置背景颜色的代码
//读取颜色数据
if(mCursor!=null){
mCursor.moveToFirst();
int x = mCursor.getColumnIndex(NotePad.Notes.COLUMN_NAME_BACK_COLOR);
int y = mCursor.getInt(x);
Log.i(“NoteEditor”, “color”+y);
switch (y){
case NotePad.Notes.DEFAULT_COLOR:
mText.setBackgroundColor(Color.rgb(255, 255, 255));
break;
case NotePad.Notes.YELLOW_COLOR:
mText.setBackgroundColor(Color.rgb(247, 216, 133));
break;
case NotePad.Notes.BLUE_COLOR:
mText.setBackgroundColor(Color.rgb(165, 202, 237));
break;
case NotePad.Notes.GREEN_COLOR:
mText.setBackgroundColor(Color.rgb(161, 214, 174));
break;
case NotePad.Notes.RED_COLOR:
mText.setBackgroundColor(Color.rgb(244, 149, 133));
break;
default:
mText.setBackgroundColor(Color.rgb(255, 255, 255));
break;
}
}
- 在editor_options_menu.xml中添加一个更改背景的按钮
<item android:id=“@+id/menu_color”
android:title=“color”
android:icon=“@drawable/ic_menu_edit”
android:showAsAction=“always”/>
- 往NoteEditor.java中添加增加上一步新增的选项的执行语句,在onOptionsItemSelected()的switch中添加代码
case R.id.menu_color://跳转改变颜色的activity
Intent intent = new Intent(null,mUri);
intent.setClass(NoteEditor.this,NoteColor.class);
NoteEditor.this.startActivity(intent);
break;
- 新建选择背景颜色的布局note_color.xml
<ImageButton
android:id=“@+id/color_white”
android:layout_width=“0dp”
android:layout_height=“50dp”
android:layout_weight=“1”
android:background=“#ffffff”
android:onClick=“white”/>
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(img-w8LV2uuA-1715712180290)]
[外链图片转存中…(img-4PiCi24W-1715712180291)]
[外链图片转存中…(img-qg40906d-1715712180293)]
[外链图片转存中…(img-DengCKwI-1715712180294)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!