<a href="http://www.jianshu.com/p/866e5b20c02d">边做iOS边学Android(一):新建一个project</a>
趁着这几天进度不赶,把学了几天的笔记整理整理。过个几天可能要抽空学然后抽空写,会比较慢。
对了,昨天找朋友拿了本郭霖大大写的《第一行代码Android》,跟现在差的时间比较长,我也没更多精力去换(主要是懒+抠门)。相信有个基本的教程再加上自己Google+Baidu,入门应该基本没问题
上次建了一个工程感受了下,这次就多创建几个控件。不着急慢慢来,东西看上去多,写起来分分钟的事情
首先可以点左上角这边的小齿轮,勾上Autoscroll to Source,这样点选文件的时候不用双击=。=不过每次新建工程都要勾,不知道有没有可以一劳永逸的办法,知道的大爷透露下啊。
two_scroll_to_source.jpeg
回顾:
昨天就只是创建了一个Activity,主要的就是以下几个:
- a. java代码里创建的Activity要有一个layout与它对应
- b. 在Activity里,通过setContentView(R.layout.layoutName)可以加载这个布局,否则啥都看不到
- c.对于主Activity (相当于window的rootViewController)要在manifest里注册<intent-filter>
- d. src是资源文件夹,里面的文件引用(用strings为例):
- 在xml里用@stirngs/yourName引用,
- 在java代码里用getResource().getString(R.string.yourName)
- 控件要有id,这样才可以在Activity里拿到它
开始:
-
1.新建一个工程,就叫UIWidget,这一次创建的时候就让它加一个empty的Activity,我们也阔以看看跟上次自己建的有啥区别。
-
2.首先说一下Android里字体单位是sp,长度单位是dp。因为安卓手机相同尺寸屏幕的分辨率天差地别,如果用px作单位,那么控件的大小显示出来不一样。而dp根据像素密度去计算出相应的像素数然后显示。
- 2.1 假如一台手机屏幕的尺寸是1.5英寸x2英寸,屏幕分辨率为240x320,那么每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向)
- 2.2 按照公式 px = dp * (api/160)就得出最终的像素数啦。
- 2.3 在工程列表里一定看到mipmap-hdpi/mdpi/xhdpi/xxhdpi/xxxhdpi,系统会根据各种像素密度的手机从里面加载对应的图片。具体怎么裁图片后面用到了再说
-
3.建几个常用的控件。
- 3.1 建一个Button。这几个属性没什么好说的。包括怎么引用按钮的标题和文本颜色,至于按钮的其他属性大伙自己试。
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="@string/button_title"
android:textSize="24sp"
android:textColor="@color/button_title_color"/>
- 3.2 学个常用的Toast(在iOS里之前还经常用MBProgressHUD)。这里有3个参数,第一个是上下文,一般就是Activity啦,第二个是提示的文字,可以在strings里定义,也可以直接写,最后一个是这个提示存活的时间,LENGTH_SHORT(2s) 或者 LENGTH_LONG(3.5s)
Toast.makeText(MainActivity.this,"提示文字",Toast.LENGTH_SHORT).show();
- 3.2 在Activity就可以这么用。用findViewById(R.id.id的name)获取到view,需要转一下类型,然后添加一个点击的监听
Button btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"劳资是个提示",Toast.LENGTH_SHORT).show();
}});
添加监听还有一种:
public class MainActivity extends Activity implements View.OnClickListener
Button btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(this);
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"劳资是个提示",Toast.LENGTH_SHORT).show();
}
从代码上看第二个跟iOS更像,但是敲起来我喜欢第一个,因为第二个特么?没?提?示???
- 3.3 建个EditView(就是UITextView,而安卓的TextView是iOS的UILabel)。一样的,在layout里添加布局,在Activity里引用。这里的hint属性就是placeholder,占位的字符(可惜iOS里的textView没这玩意,每次还搞个lable监听编辑状态,wtf)
<EditText android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="@string/text_view_holder"
android:textSize="22sp"
android:textColor="@color/textView_text_color"/>
- 3.4 建个ImageView,这里的src就是图片
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src = "@mipmap/ic_launcher"/>
- 3.5 改一下,点击按钮的时候获得EditView里的文字
@Overridepublic
void onClick(View v) {
EditText editText = (EditText)findViewById(R.id.editText);
String showStr = editText.getText().toString();
Toast.makeText(MainActivity.this,showStr,Toast.LENGTH_SHORT).show();
}
- 3.6 跑起来,点🐔按钮
下次就说下Activity的生命周期,然后多创建几个,让他们可以通信。👋
网友评论