个人技术博客
由于本人在“人月神教”小组只要负责Android前端UI的工作,所以最近这段时间也一直在学习相关内容,算是有些收获,至少感觉做APP还是一件很有意思的事。
Java
很羞愧的说,在做这项作业之前,我只学过C和C++,由于Android开发是基于Java的,所以我花了三天时间看完了慕课网的Java相关基础教程,总结出来Java其实和C++非常类似,都是偏于面向对象的语言,强调类与方法,继承多态接口等概念比较重要。由于时间有限并没有深入学习Java,只是大致了解了一下Java的基本语法格式,主要做到能看得懂,不拖以后Android开发的后腿。
Android
鄙人写安卓用的开发工具是Android Studio,之所以用Android Studio,是因为觉得eclipse+ADT比较老了,谷歌已经在慢慢淡化对eclipse的支持,甚至下架了ADT的下载链接,而Android Studio毕竟是谷歌亲生IDE,之后也会成为Android开发的主流IDE。其实就是觉得Android Studio更高大上。而且是团队大佬们定的规矩。给大佬递茶。
下面说一些我在做UI时遇到的一些问题:
用SharedPreferences实现首次登录显示引导界面
很多优秀的软件都有引导界面,来引导用户更好地使用APP,于是我感觉初次登陆的引导界面十分的关键。最开始做的时候非常头疼,因为什么都不会,一直想着如何判断是否是第一次登陆,终于查阅了多方教程找到了用SharedPreferences实现首次登录显示引导界面的方法。
SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数,如储存用户密码等信息的时候就可以用到,当然也可以用来记录是否是首次登录。
首先,新建一个SharedPreference类,用来返回或者修改保存在本地的记录信息,我这里的记录信息是isLogin,即是否初次登陆,下面是代码:
public class SharePreference {
Context context;
public SharePreference(Context context)
{
this.context = context;
}
/****设置状态 false为安装后第一次登录,true为已经登录过****/
public void setState()
{
SharedPreferences sp = context.getSharedPreferences("save", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("isLogin", true);
editor.commit();
}
/***获取状态***/
public boolean getState()
{
SharedPreferences sp = context.getSharedPreferences("save", Context.MODE_PRIVATE);
boolean b = sp.getBoolean("isLogin", false);
return b;
}
}
接着,就可以在相应要调用读取SharedPreferences信息的地方使用了,比如我的是欢迎页点击按键根据是否首次登录跳到不同的页面,代码如下:
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
SharePreference sp=new SharePreference(FirstActivity.this);
boolean isLogin = sp.getState();
if(isLogin){
Intent intent=new Intent(FirstActivity.this,MainActivity.class);
startActivity(intent);
}
else {
sp.setState(); //将登陆状态设置为true;
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
}
});
用此种方法还可以实现记住密码等保存简单用户数据的功能。
给checkbox更换选中框样式(PS:自带的太丑)
- 首先肯定要先找两张令自己满意的选中框样式图,一张是选中的,一张是没选中的,命名select和noselect,调整到合适的分辨率(这很重要,不然最后选中框会变得和文字不协调,我一般文字大小50sp的话,选中框样式大概调成35*35分辨率大小的,调整分辨率的话,建议用PS),然后把它们放入drawable文件夹中(Android的图片素材统一放在这个文件夹里)
- 接着右键res\drawable,新建drawable resourse file,然后在里面添加
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:drawable="@drawable/select"
/>
<item
android:state_checked="false"
android:drawable="@drawable/noselect"
/>
</selector>
- 在values文件夹下面的style.xml文件里增添如下代码,style name的名字可以随便取,但是item name须为: android:button(会有代码提示),
- 引用你定义的选择器(有代码提示 Android Studio 代码提示快捷键为 "Ctrl+Alt+空格")
<style name="check_box">
<item name="android:button">
@drawable/checkbox
</item>
</style>
- 在layout文件夹下的对应的xml引用你所定义的style,即在checkbox属性中添加
style="@style/你的style name
完成,选的图片如果好看的话,那不知道比自带的高到哪里去
Android Studio界面隐藏标题栏
-
APP运行时如果需要临时隐藏状态栏,只需要在该动作前加入
getSupportActionBar().hide();
即可,不过只有运行的时候才能看到标题栏被隐藏了,在IDE里编辑的时候还是会有标题栏
-
无论何时都隐藏状态栏
网上找的教程多是eclipse版的,不适用于Android Studio。原因是Android Studio的Activity类继承的是AppCompatActivity,这个是属于support v7附加包的类。而eclipse使用的则是v4包,继承的是Activity类。所以两者的方法不通用,这里介绍下Android Studio隐藏状态栏的方式:
- 修改AndroidMainfest.xml中的 theme为
android:theme="@style/AppTheme"
即默认设置
- 在values\style.xml中把
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
改为
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>