Android 应用界面开发笔记

Android 应用界面开发笔记

 

第1, 2周

 

Before start

--All about GEEK!

立志成为一只技术Geek!

 

搭建环境

环境:JDK + Android SDK [ 配置环境变量,参考搜索出来的教程配置OK

开发工具Android Studio + Genymotion + ADT[ 由于自己是谷歌亲儿子,直接用的真机调试

调试过程中遇到问题: Android Studio里Android device monitor不显示设备

根据搜索提示,确保了USB调试已打开,ADB设置正确,Bios下设置正确,最后通过在官网http://developer.android.com/sdk/win-usb.html#top 下载驱动,然后在设备管理器的Nexus5手动安装后终于可以在Android device monitor显示了设备

接下来就开始了Android学习之旅

 

第一个页面 Activity

 

新建project [ 第一个project,还是挺激动的],应用名称要注意首字母大写,接下来选择API Level,第一次那么全面地认识Android小机器人从最开始的A到现在的M-Marshmallow,简单了解了不同API/版本的OS的不同,看一眼躺在电脑旁升级到最新棉花糖的五儿子,虽然两岁多了但是速度依旧飞快,好欣慰。。/扯远了

AS有很多布局模板,先从最基本的emptyactivity 开始第一个app //学习一段时间后一定要把所有的模板都试试

 

第一次看第一个视频的时候,只觉好玩儿,其实还是不太理解的,再看的时候先把所有文件夹的不同子文件夹和子文件都看了一圈,明确了各个部分分别的作用和意图,加深了理解。

 

1.      Activity

每个activity即一个页面,页面上可以有很多控件,实现不同的功能

2.      Layout

Layout文件下.xml 文件是一个页面的布局框架。注: xml文件的注释不同java,是 刚开始直接注释按照java的写,报错了还不知道怎么回事

.xml 下感觉最方便的就是design/text了,直观一点直接在design下拖拽控件并预览,在text下编辑控件,很是方便。

.xml 文件下的文本或者具体的属性值,最好不要直接写出来,把他们都放在res文件下,res下有drawable, strings, colors 等,都帮我们很有秩序地管理了代码,看起来也规范清爽了很多。

刚开始在design下面拖拽玩儿的时候,还没有发现页面的布局是RelativeLayout,所以东西随便拖到哪个位置,看到视频里具体降到排列组合才意识到默认LinearLayout,当然可以直接改变layout方式来排列页面上的内容。


3.      Res

Res文件夹下包括Layout, drawable, values, mipmap (icon) 等,所有的资源都可以在这里找到。

 

交互

-         Button – onClick

Button 控件可以被点击,onClick点击触发的行为 [ findViewById(R.id.button).setOnClickListener(new View.OnClickListener() ],可以点击显示内容,可以点击返回其他页面,可以长按跳转,可以点击后长显等等等,AS的提示功能非常强大,可以全都试一遍


APP的名字修改:res  - values - strings.xml 


版本号 在AndroidManifest.xml 的package里面,输入会提示version code, version name,以往在eclipse里,是要读取版本号和版本名的,但是在Android Studio里,因为是由Gradle去编译的,所以就不需要这两个属性了,查找build.gradle即可
-Gradle可以帮我们构建android应用


添加启动界面
先新建一个SplashActivity,并直接继承于Activity, 新建class下的kind包括Class, Interface, Enum, Annocation, Singleton
继承Activity后会自动import android.app.Activity; 
创建OK后,创建一个onCreate,由于activity还是空的,需要和布局进行关联,我们可以创建一个布局setContentView
        setContentView(R.layout.activity_splash); //activity_splash 可以通过alt + enter直接进行创建
上面这串代码即关联了activity和其布局

启动界面 


//文本控件,text 不要直接填写文本,把文本内容放到values 下的strings里,text = "@string/splash_text" 


  android:gravity="center" //在LinearLayout下面设置,让内容居中


--设置启动界面
manifest中application下第一个activity (MainActivity) 后面加上SplashActivity, 并且复制intent-filter -- 表示 系统应用的启动页面

                //action
                //运行时第一个界面

修改背景颜色 即在布局里加 在xml里@,size调节同上,    android:textColor="@color/white"
可以alt + enter在white上直接创建一个white resource 


Activity间数据传递


previously, main activity automatically turn to splash activity, splash activity clicked to main activity

-- 1. automatically turn 
do not use comment when u delete things, just in case. 
- we delete the button of splash activity
''handler'' (os.login)

Handler m //在runnable中运行任务,写一个内部类
import android.os.Handler;
 
public class SplashActivity extends Activity{


    Handler mHandler = new Handler();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //跳转到mainActivity
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
            }
        },666);
    }


}


--将启动页面的文字传递到下一个页面


要先获取文字
//splashActivity: 
               intent.putExtra("title",title);
   || TextView textView = (TextView)findViewById(R.id.title_text_view);
        final String title = textView.getText().toString();


//mainActivity 先get title
 Intent intent = getIntent();
        if (intent != null){
            String title = intent.getStringExtra("title");
显示 title 
 setTitle(title);
//试试看传递一个对象
intent.putExtra(String name, Parcelable/Serializable value)--序列化 要传递一个对象要先对其序列化
生成构造器的快捷键 intert + alt


public class UserInfo {


    private String mUserName;
    private int mAge;


    public UserInfo(String mUserName, int mAge) {
        this.mUserName = mUserName;
        this.mAge = mAge;
    }
}


--序列化是一个可传的对象-组装


 Intent intent = getIntent();
        if (intent != null){
            String title = intent.getStringExtra("title");
            UserInfo userInfo = (UserInfo) intent.getSerializableExtra("userInfo");
            setTitle(title);
        }
    }


在UserInfo里加几个方法getter setter, 直接构造


提取xx变为常量 ctrl+alt+c, 在mainActivity就可以直接引用常量


启动了一个页面,让其再跳转回来


                startActivityForResult(intent, REQUEST_CODE);
--previous code,当前页面跳回--改为让其关闭页面


            finish();


MainActivity: 
onActivityResult //当页面有结果的时候() Log.i("")


ctrl + alt + f 设置为全局变量


activity 生命周期
onCreate
onStart
onResume
onPause
onStop
onDestroy
onRestart


写Log是很好的调试方法 //*** 这一部分还需要强化 


android中的控件 //课后要多试试,熟练使用


- 控件View的通用属性: 宽高,颜色,边距,是否可见,内容居中,点击事件等
- TextView 显示文本 CheckedTextView
- EditText 编辑框 hint password lines singlines maxlines phoneNumbers 等
- Button 点击按钮 


设置文本宽度,用dp为单位
设置文本大小,用sp为单位
-都是根据像素(px)和屏幕大小来确定的
所有的内容,默认从上而下从左至右排列
gravity = center 可居中控件 控件属性可以直接通过AS代码提示功能来学习


签名,打包,发布


build - generate signed APK - sign (防止被覆盖
.jks 文件


-------------------以上为第一次笔记作业,自我反省,笔记很乱,条理性不强,习惯没有很好养成,确实做笔记帮助自己更好理解和记忆,平时还是要养成好习惯,下一次要更加加油!


你可能感兴趣的:(Notes,Android,AS,android)