android笔记

 

一、基本知识:

计量单位:

安卓中尺寸使用dp为单位,手机主流的分辨率为720x1280和1080x1920,对应宽都是360dp,高度是640dp,关于安卓手机适配:https://blog.csdn.net/SEU_Calvin/article/details/52690498
字体大小使用sp为单位;

高度和宽度:

fill_parent:表示控件的大小与其父容器的大小相同。
match_parent:同上,推荐使用match_parent代替fill_parent。
wrap_content:表示控件的大小刚好能包裹里面的内容,随着内容的变化而变化,但不超过父容器的大小。

控件类的继承关系:

所有控件都继承自View类,TextView的子类包括:EditText、Button、RadioButton、Checkbox;ImageView的子类包括:ImageButton;

 

二、控件属性:

1、通用属性

android:id:编号,egg: android:id="@+id/btn_submit";
android:layout_width:宽度,取值:fill_parent、match_parent、wrap_content、20dp;
android:layout_height:高度,取值:同上,egg:layout_height="wrap_content";
android:background:背景颜色,egg:android:background="#FF5983";
android:visibility:是否可见,取值为“visible ”(可见)、“invisible”(不可见)、“gone”(隐藏);

2、文字显示:
android:text:文本内容
android:textColor:文本颜色
android:textStyle:文本样式,如粗体、斜体等,取值:bold、italic
android:textSize:字体大小,egg:android:textSize="18sp";

3、对齐
android:gravity:控件内元素的对齐方式,取值:left、right、center、top、bottom等;
android:layout_gravity:控件自身的对齐方式,也就是,相对于父容器的对齐方式,取值:left、right、center、top、bottom等;
android:layout_margin:控件与其他控件之间的距离,还有:android:layout_marginLeft、layout_marginRight、layout_marginTop、layout_marginBottom;
android:padding:控件本身的内容与控件边缘的距离,还有:android:paddingLeft、paddingRight、paddingTop、paddingBottom;
android:layout_weight:表示控件所占的空间比,比如布局内俩个元素,一个layout_weight=1,另个为layout_weight=2,则表示前者占1/3空间,后者占2/3空间;
android:orientation:用于线性布局中,指定内部控件的排列方向:水平(vertical)、垂直(horizontal);

4、文本、输入框控件
android:autoLink:标识文本类型,取值:none、web、phone、map等,标识后点击有对应的动作;
android:inputType:标识输入框类型,取值:text(文本)、number(数字)、date(日期)、textPassword(密码)、phone(拨号)等;


5、图片控件:
android:src="@drawable/pig":设置图片地址(本地)
android:adjustViewBounds="true":是否原图长宽比,单独设置不起作用,需要配合maxWidth和maxHeight属性一起使用。
android:maxWidth="100px":设置图片的最大宽度;
android:maxHeight="100px":设置图片的最大高度;
android:scaleType:设置显示的图片如何缩放,常用取值:centerInside(等比例显示完整图片),centerCrop(完全铺满);

6、其他
android:clickable="true":点击事件是否可用,如果设置false,则监听不到点击事件;



6、分割线:
方法一:利用布局的属性divider
android:divider:分割线图片;
android:showDividers:分割线位置(none、begining、end、middle);
android:dividerPadding:分割线边距

方法二:创建一个高度1px的view
<View android:layout_width="match_parent"  android:layout_height="1px"  android:background="#000000" />

 

7、相对布局的定位方法:
根据父容器定位:取值true或false
android:layout_alignParent + Left、Right、Top、Bottom="true":将控件置于父控件的左右上下;
android:layout_centerInParent="true":将控件置于父控件的中心位置;
android:layout_centerHorizontal="true" :将控件置于水平方向的中心位置;
android:layout_centerVertical="true" :将控件置于垂直方向的中心位置;

根据兄弟控件定位:取值兄弟控件id
android:layout_align + Left、Right、Top、Bottom="@+id/btn_user":对齐于兄弟控件边界的左右上下;
android:layout_ + toLeftOf、toRightOf、above、below="@+id/btn_user":对齐于兄弟控件的左右上下;

 

三、控件方法:

通用:

setContentView(R.layout.activity_main):设置布局
findViewById():获取控件,egg:TextView txt_name = (TextView) findViewById(R.id.txt_name);
getId():获取控件id
setText("hello"):设置文本内容;
setEnabled(true):设置是否可用;
getWidth() :获取宽度
getHeight():获取高度

setImageDrawable( ):设置图片(对应src属性);
setBackgroundDrawable( ):设置背景(对应background属性);
isClickable():是否选择,用于单选、复选框;

 
页面之间的参数传递:

传递参数(在事件调用中):

Intent intent=new Intent(this,someActivity.class);
Bundle bd = new Bundle();
bd.putInt("id",1); //传递整数 
bd.putString("name","jack"); //传递字符串
intent.putExtras(bd);
startActivity(intent);


获取参数(在Activity的OnCreate中):

Intent getData = getIntent();
Bundle bd = it.getExtras();
int id = bd.getInt("id"); //获取整数
String name = bd.getString("name"); //获取字符串

 传递数组、Map、自定义对象,参考:https://www.w3cschool.cn/uawnhh/klxb8ozt.html
 

 
常用控件的方法:(待)

1)文本

2)输入框

3)按钮

4)图片

 

四、控件事件:

1、接口回调的形式绑定点击事件:
在Activity的OnCreate中,直接完成代码逻辑

btnSubmit.setOnClickListener(new OnClickListener() { 

  @Override
  public void onClick(View v) {
    //业务代码
  }
});

2、委托代理:
定义ACtivity类时,声明要实现的事件类接口,
然后在Activity的OnCreate中,填写事件监听:btnSubmit.setOnClickListener(this);
最后,在Activity的onClick方法中,判断控件ID,再处理;


public class MainActivity extends AppCompatActivity implements View.OnClickListener{。。。。}//声明要实现的事件类接口

public void onClick(View v) {
  switch (v.getId()) {
    case R.id.btn_login:  //判断控件
    //业务代码
    break;
    case R.id.btn_cancel:
    //业务代码
    break;
  }
}

3、继承某个控件类,在回调方法中,比如onTouchEvent、onKeyUp中,重新事件处理代码;

 

五、Adapter 适配器
说明:安卓有几个UI控件,必须配合Adapter,才能显示内容,常见的Adapter控件:ListView(列表,常用)、RecyclerView(版本5.0新增控件、ListView加强版)、GridView(网格视图)、Spinner(列表选项框)等,而系统自带了Adapter(ArrayAdapter、SimpleAdapter等),不过,只能实现简单列表效果,如果想实现复杂的列表效果,则需要自定义Adapter;

Activity中使用Adapter控件的方法:
1、Activity布局中放置一个Adapter控件,比如ListView;
2、新建Adapter控件的item布局(比如,列表的一行、网格的一格等,这些重复的item);
2、继承BaseAdapter,自定义适配器,重写5个方法:构造、getCount、getItem、getItemId、getView(处理 item数据 和 item布局 的关系);
3、MainActivity的onCreate方法中,调用代码,给Adapter控件设置适配器;
备注:ListView、GridView、Spinner自定义适配器继承BaseAdapter就可以,而RecyclerView控件不同,其适配器需要继承RecyclerView.Adapter;


六、网络请求(异步加载) (待)
系统自带异步处理:Handler、runOnUiThread、AnsyncTask
第三方网络请求框架:VolleyOkhttp

自定义 Loading加载动画:https://blog.csdn.net/weixin_42630638/article/details/117949821


七、底部导航栏:


八、开发框架:MVC、MVP、MVVM

其他:

1)、关于碎片Fragment:  https://www.jianshu.com/p/dcf95f5048a2

 
疑惑:
1、如何嵌入网页,跟原生交互?

posted on 2022-07-29 17:43  飞哥100  阅读(133)  评论(0)    收藏  举报

导航