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和其布局

启动界面


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


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


--设置启动界面
manifest中application下第一个activity (MainActivity) 后面加上SplashActivity, 并且复制intent-filter -- 表示 系统应用的启动页面
<intent-filter>
<action android:name="android.intent.action.MAIN" /> //action
<category android:name="android.intent.category.LAUNCHER" /> //运行时第一个界面
</intent-filter>
修改背景颜色 即在布局里加 在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 文件


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


更多相关文章

  1. Android(安卓)Fragment和FragmentActivity区别和用法
  2. Android(安卓)OOM ,回收布局文件中ImageView占用的内存.Bitmap O
  3. android之Animation的基本使用
  4. android自定义视图属性学习
  5. android仿苹果弹性布局
  6. Android(安卓)5.0 CardView+ListView 卡片布局应用
  7. 【Android(安卓)自定义控件】自定义View相关知识总结
  8. Android(安卓)自定义RadioButton的样式
  9. Android(安卓)UI(CheckBox)详解

随机推荐

  1. android 布局实例解析 柱状图效果
  2. Android(安卓)Sqlite数据库中基础的增删
  3. Android使用百度地图移动到我的位置
  4. 【Android】获取WIFI列表简单小例子
  5. 系出名门Android(2) - 布局(Layout)和菜
  6. Android的Bluetooth Profile与UUID
  7. android抽屉实现不同之处
  8. Android下使用Socket连接网络电脑
  9. android系统权限关机重启
  10. Android中ExpandableListView的使用