美文网首页
慕课网android攻城狮的第一门课笔记

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

作者: 开子的私家地 | 来源:发表于2017-04-16 00:01 被阅读120次

    安卓项目目录结构
    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实现页面跳转: http://www.jianshu.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都是对的。

    相关文章

      网友评论

          本文标题:慕课网android攻城狮的第一门课笔记

          本文链接:https://www.haomeiwen.com/subject/yvioattx.html