慕课网android攻城狮的第一门课笔记

安卓项目目录结构
src存放java源代码。
gen存放系统自动生成的配置文件
res存放应用用到的所有资源文件,如图片,布局等等
drawable存放不同分辨率的图片
layout存放布局文件
values存放字符串
dimens.xml
strings.xml、主题,颜色、样式 #213443 颜色
styles.xml等资源文件
menu 文件夹 保存一个菜单资源 一个文件表示一个菜单包括子菜单 名字任意取 以.xml结尾
bin 文件夹作为源码编译后的输出文件夹。这个可以在Eclipse中进行设置,你可以设置为任何你愿意的路径作为编译后输出文件夹。
andriodmanifest.xml清单文件.

大家都知道,在Android布局文件中控件的高度与宽度设置时有三个属性:fill_parent,match_parent,wrap_content。

  1. fill-parent:
    设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。
  2. match-parent:
    Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了.
  3. wrap_content:
    设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。

TextView 控件
android:id -- 控件的ID
android:layout_width -- 控件的宽度
android:layout_height -- 控件的高度
android:text -- 文本内容
android:textSize -- 文本大小
android:textColor -- 文本颜色
android:background -- 控件背景
android:hint -- 输入显示文本 EditText
android:inputType -- 输入文本类型

插件中设置间隔三个px固定,不推荐 dp 推荐 dip sp文字

按钮的监听事件 log.i 日志
1:通过匿名内部类;
2:通过独立类实现(自定义一个类)
3:实现接口类(自身类实现OnClickListener接口)
4:通过成员内部类实现;
5:在xml文件中添加OnClick监听事件,在MainActivity中创建监听方法

textview跑马灯效果:
1、定义textView标签的4个属性:
android:singleLine="true"//使其只能单行
android:focusable = "true"//获得焦点(当设备是触屏设备时需结合focusableInTouchMode) 使循环
android:ellipsize=”marquee”//以横向滚动方式显示(需获得当前焦点时) 去掉省略号
android:focusableInTouchMode="true" //触屏模式下可获得焦点(模拟器是触屏设备)
// android:marqueeRepeatLimit="marquee_forever" 使永远转
2、自定义类继承TextView:
实现三个构造函数;
复写isfocued方法,返回true(默认都有有焦点,平常只有一个有焦点在第一行上)
3、使用自定义的类,方法是用包名和自定义类名代替TextView(src下的包名+类名)
自动补充字符
1,AutoCompleteTextView
2,初始化控件
3,设置适配器,ArrayAdapter(String) (this,android.R.layout.simple_list_item_1,res) ;
4,初始化数据源 String[] res={"","","","",};
5,将适配器和控件绑定 acTextView.setAdapter(adapter);
6,设置匹配门槛 completionThreshold="" 几个字符

MultiAutoCompleteTextView 多次匹配字符,字符间并以都好等(自定义)结尾
android自带的MultiAutoCompleteTextView只能用逗号做分隔符,要用别的字符的话就需要自定义了

ToggleButton按钮实现开关效果
1, ToggleButton
2, 属性android:checked(默认值false),textOn="开"(true),textOff=“关”(false)
3, 初始化控件 implements OnCheckedChangeListener

// 初始化togglebutton控件
tb = (ToggleButton)findViewById(R.id.toggleButton1);
img = (ImageButton)findViewById(R.id.imageView1);

// 给TB设置监听器'
tb.setOnCheckedChangeListener(this);
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub 当点击这个tb时,更换img背景
img.setBackgroundResource(isChecked?R.drawable.on:R.drawable.off);//调取drawable中图片on或者off

}

4, Backgroud设置背景图片

CheckBox
初始化findViewById
设置监听器
// 给TB设置监听器'
tb.setOnCheckedChangeListener(this);
tb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
            //获得checkBox文本内容
            String text = tb.getText().toString();
            Log.i("tag", text);
        }
    });

1.RadioGroup:是RadioButton的一个集合,提供多选一机制;
2.属性:android:orientation="vertical"|"horizontal"
注意导包RadioButton,接口implements OnCheckedChangeListener,
设置监听, switch(checkedId){
Case R.id.radio0: logi.i(…); break;
Case R.id.radio0: logi.i(…);break;
Default: break;
}

布局五类:5大布局,线性,相对,帧,绝对,表格 布局中可以套用布局
1.线性布局: 子控件横向或者竖向 orientation vertical/horizontal ,
决定布局中子布局位置gravity center、 可多个属性连用
Layout_gravity 子类位置 、layout_weight 设置占几份,本身控件占父类的比例 wrap_parent注意:match_parent相反;

2.相对布局:相对父类容器或控件间相对位置
Margin 系列属性 等等

3.帧布局 framelayout 后面的会覆盖前面设置的
android:foreground 前景

4.绝对布局 layout_x _y基本用不到

5.表格布局 :
Collapsecolumns =“,“ 隐藏索引列
Shrinkcolumns =“” 收缩
Stretchcolumns = 拉伸,占空间
Layout_column = 该空间显示在第几列 从0
Layout_span = 该控件占几列

Android四大组件
1.Activity
2.Service
3.BroadcastReceiver
4.Content Provider

Activity是一个应用程序组件,提供用户与程序交互的界面
1.继承Android的Activity类
2.重写方法
3.设置显示布局
4.在AndroidManifest文件中,注册Activity

Activity生命周期
onCreat()
onStart()
onResume() --活动状态 activity处于界面最顶端,获取焦点
onPause() --暂停状态 activity失去焦点,但对用户可见
onStop() --停止状态 activity被完全遮挡,但保留所有状态和成员信息
onDestroy() --非活动状态 activity被停止
onRestart()

在两个activity之间
在setOnClickListener(new OnClickListener){
@
Public void onClick(View v){
Intent intent = new Intent(MainActivity.this,Second_Activity.class);
MainActivity.this.startActivity(intent);
}
}
解释上面:Intent一般用来启动活动、启动服务等。
Intent的构造方法Intent(context , class) 第一个参数要求启动活动的上下文,第二个参数指定想要启动的目标活动。
Activity类提供了一个startActivity方法,这个方法是专门用来启动活动的,他接受一个Intent方法。
老师在这里直接把构建好的Intent传入startActivity方法中了。
Intent可理解为意图,它来协助完成Android各个组件之间的通讯
使用Intent实现页面跳转: //www.greatytc.com/p/a8605ad49228 详细

  1. 无返回结果的:startActivity(intent)
    新建2个CLASS文件->布局文件xml ->清单文件中声明activity,设置先启动页面 -> 初始化按钮,通过点击按钮实现页面跳转->在点击事件中 intent -> startActivity(intent)
    Intent(这个类(要用的).this,SActivity.class) or 全局变量private Context mcontext Intent(mcontext, SActivity.class)

  2. 有返回结果的:startActivityForResult(inten,requestCode);
    OnActivityResult(int requestCode,int resultCode,Intent data); A接受B回传数据
    SetResult(resultCode,data);B通过这个方法回传给A页面
    requestCode参数是当前方法的请求码,定义一个请求码作为当前跳转方法的标识;一个是resultCode,定义一个resultCode作为当前目标Activity的标识。另一个是data,是当前目标Activit的intent对象,也是存放回传数据的容器,回传到第一个Activity的实际上就是一个Intent对象,将数据携带在这个intent对象中回传过去。
    通过requestCode和resultCode可以确定接收哪一个StartActivityForResult方法和哪一个目标Activity返回来的数据,读取intent中携带的数据。
    finish() 销毁当前页面,requestCode resultCode ,通过intent返回,
    Intent intent = new Intent(mContext,SActivity.class);
    //在这里将requestCode定义为1
    startActivityForResult(intent,1);
    //返回 onActivityResult
    Intent intent= new Intent();
    intent.putExtra(key,返回参数);
    setResult(resultCode,intent);
    finish();
    //接收 先判断requastCode和resultCode
    String content = getxxxxExtra(key); 将数据放入变量content中,略
    tv.setText(content); 放到tv中

Android-App签名打包

  1. 为了保证程序开发者合法
  2. 防止部分人通过使用相同package name混淆替换已安装的程序,从而出现恶意篡改
  3. 保证每次发布版本的一致性

String.subString
1.String str;
str.subString(int beginIndex)------表截取从beginIndex到结尾的字符串
2.String str;
str.subString(int beginIndex,int endIndex)-------表截取从beginIndex到endIndex-1的字符串

**************************************关于@后面加+
@+id是在R.java中添加id,@id表示引用现有id
如果在@后面使用“+”,表示当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值,例如,@+id/xyz会在R.java文件中生成int xyz = value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。

因此,使用@+id和使用@id都是对的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,724评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,104评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,142评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,086评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,076评论 5 370
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,914评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,220评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,871评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,318评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,834评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,951评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,574评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,162评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,162评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,383评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,349评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,652评论 2 343

推荐阅读更多精彩内容