个人技术博客

个人技术博客

由于本人在“人月神教”小组只要负责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>

待续....

原文地址:https://www.cnblogs.com/n9705/p/7812172.html