一、布局管理器:
LinearLayout(线性布局):
常用属性:id(@+id/),layout_margin,layout_width(wrap_content,match_parent,200dp),layout_padding,layout_height,orientation(vertical,horizontal),background,
gravity(控制组件所包含的子元素的对齐方式),layout_weight控制该组件在父容器里的对齐方式(1,2剩余空间按照权重均分layout_width="0dp"),divider分割线,
showDividers设置分割线所在位置,dividerPadding设置分割线的padding
RelativeLayout(相对布局):
常用属性:根据父容器定位(layout_alignParentBottom,layout_centerVertical);根据兄弟组件定位(layout_toLeftOf,layout_below,layout_toRightOf,layout_alignBottom)
FrameLayout(帧布局)
常用属性:foreground设置前景;foregroundGravity设置前景位置;
TableLayout(表格布局)和TableRow一起使用
常用属性:collapseColumns设置需要被隐藏列的序号;stretchColumns设置允许被拉伸列的序列号;shrinkColumns设置允许被收缩列的序列号;
子控件属性:layout_column显示在第几列;layout_span横向跨几列;
GridLayout(网格布局)
常用属性:orientation;columnCount设置每行显示多少列数;rowCount设置每列显示多少行数;
子控件属性:column显示在第几列;columnSpan横向跨几列;columnWeight横向剩余空间分配方式;gravity在网格中的显示位置;
row显示在第几行;rowSpan横向跨几行;rowWeight纵向剩余空间分配方式;
ConstraintLayout(约束布局)
常用属性:
二、控件
颜色:00000000(八位:前两位为透明度,红,绿,蓝)
1、TextView:
基础属性:layout_width,layout_height,id,text,textColor,textStyle,textSize(sp),background,maxLines,ellipsize,gravity(设置空间中内容的对齐方向,
textview中是文字,imageview中是图片)
字体阴影:shadowColor和shadowRadius,shadowDx,shadowDy,
文字+icon:drawablePadding,drawableRight
跑马灯:singleLine,focusable,focusableInTouchMode,ellipsize,marqueeRepeatLimit(android:clickable="true"/<requestFocus/>/自定义实现TextView-isFocused)
2、StateListDrawable:StateListDrawable是Drawable资源的一种,可以根据不同的状态设置不同的图片效果,关键节点<selector>,我们只需要将Button的background属性设置为
该drawable资源即可轻松实现按下按钮时不同的按钮颜色或背景
drawable:引用Drawable位图;state_focused:是否获得焦点;state_pressed:控件是否被按下;state_enabled:控件是否可用;state_selected:空间是否被选择;
state_checked:控件是否被勾选;state_checkable:控件是否被勾选;state_window_focused:是否获得窗口焦点;state_active:控件是否处于活动状态;
state_single:控件包含多个子控件时确定是否只显示一个子控件;state_first:控件包含多个子控件时确定中间一个子控件是否处于显示状态;
state_last:控件包含多个子控件时确定最后一个子控件是否处于显示状态;
3、shade:形状(ring-圆环,oval-椭圆,rectangle-长方形,line-线)
size:大小;solid:固体即平面填充;corners:(radius)角落的弯曲程度;stroke:(width)描边;gradient:线性渐变;padding:边距;
4、Button
文字大小、颜色;自定义背景形状;自定义按压效果;点击事件;
textAllCaps="false"//英文字母不会全大写
Toast.makeText(this,"点击我了!",Toast.LENGTH_SHORT).show()
5、EditText
hint(提示信息);inputType="textPassword";drawableLeft,drawablePadding,maxLines="1";maxLength="20"
addTextChangedListener(new TextWatcher(){})//监听内容变化事件
Log.d("标记","内容")
6、RadioButton
常用属性:RadioGroup(orientation),RadioButton(checked='true');自定义样式:button="@null",background;监听事件:RadioGroup.setOnCheckedChangeListener;
onCheckedChanged(RadioGroup radioGroup(单选组), int i(选中radiobutton的id))
7、CheckBox
常用属性:;自定义样式:button="@drawable/chech_box";监听事件:CheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener());
8、ImageView
Button的其他衍生控件:ToggleButton,Switch
常用属性:src,maxHeight,maxWidth,adjustViewBounds,scaleType:fitXY(撑满控件,宽高比可能发生改变)fitCenter(保持宽高比缩放直至能够完全显示)centerCrop(保持宽高比缩放直至完全覆盖控件裁剪显示)
加载网络图片:使用第三方插件:glide同步,Picasso加载网络图片的操作是异步操作;在build.gradle中引入插件,在manifest中申请一个网络请求;
9、ListView
常用属性:listSelector,divider,dividerHeight
Adapter接口:LayoutInflater是用来找layout下xml布局文件并且实例化,而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。
对于一个没有被载入或者想要动态加载的界面,都需要使用LayoutInflater.inflate()来载入
10、GridView
常用属性:horizontalSpacing,verticalSpacing,numColumns
11、RecyclerView
定义内部类ViewHolder并继承RecyclerView.ViewHolder,传入的view参数通常是RecyclerView子项的最外层布局;
新增适配器并让其继承RecyclerView.Adapter,把泛型指定为定义的内部实体类ViewHolder并重新onCreateViewHolder(),onBindViewHolder()和getItemCount()三个方法;
onCreateViewHolder()用于创建ViewHolder实例并把加载的布局传入到构造函数中去,再把ViewHolder实例返回;可以给widget添加onclick事件
onBindViewHolder()用于对子项的数据进行赋值,会在每个子项被滚动到屏幕内时执行。position得到当前项的实体实例;可以给itemView添加onclick事件
getItemCount()返回RecyclerView的子项数目;
LayoutManager用于指定RecyclerView的布局方式,LinearLayoutManager是线性布局,GridLayoutManager是网格布局,StaggeredGridLayoutManager是瀑布流布局;
RecyclerView.ItemDecoration:onDraw(在item下面绘制)onDrawOver(在item上面绘制)getItemOffsets(在item周边绘制)
XRecyclerView:addHeadView,addFootView,下拉刷新,上拉加载
不同ViewHolder加载
12、WebView
加载网页:(1)加载URL(网络或者本地assets文件夹下的html文件)(2)加载html代码 (3)Native和JavaScript相互调用
加载URL:webview.getSettings().setJavaScriptEnabled(true);//设置需要js支持webview.loadUrl("https://m.baidu.com") webview.loadUrl("file:///android_asset/test.html")
加载html代码:webview.loadData();webview.loadDataWithBaseURL();
网页的前进后退:
webview.canGoBack();webview.goBack();webview.canGoForward();webview.goForward();webview.canGoBackOrForward(int steps);webview.goBackOrForward(int steps)
按下返回键,默认是退出当前Activity,如果希望是WebView内页面后退,需要重写onKeyDown方法
public boolean onKeyDown(int keyCode,KeyEvent event){
if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
webView.goBack();
return true;
}
return super.onKeyDown(keyCode,event);
}
13、Toast:是一个消息提示组件
设置显示的位置:Toast toast = Toast.makeText(getApplicationContext(),"居中展示",Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER,0,0);toast.show();
自定义显示内容(添加一张图片) toast.setView()
14、AlterDialog:消息弹出对话框
默认样式AlertDialog.Builder dialog = new AlertDialog.Builder(context).setTitle().setMessage().setPositiveButton().setNeutralButton().setNegativeButton()
单选样式setItems();setSingleChoiceItems();setCancelable(false)//点击周围不会关闭;dialog.dismiss()//关闭dialog;
多选样式setMultiChoiceItems()
自定义样式setView()
15、ProgressBar&ProgressDialog
设置进度条样式:style="@android:style/Widget.ProgressBar"
设置进度条数值:progress.setProgress(5);
Handler handler = new Handler();
自定义进度条样式:indeterminateDrawable(animated-rotate);等价于style="@style/MyProgress",所有控件都可以通过style设置样式
16、PopupWindow
在按钮周围显示View
PopupWindow popupWindow = new PopupWindow(View contentView, int width, int height);
popupWindow.setOutsideTouchable(true);//设置点击外面可以收回
popupWindow.setFocusable(true);//设置点击一次打开或回收
popupWindow.showAsDropDown(pop1Button);//设置在按钮下方展示
17、Notification与NotificationManager
NotificationManager类是一个通知管理器类是由系统维护的服务
使用NotificationCompat类的Builder构造器来创建Notification对象,可保证程序在所有的版本上都能正常工作。Android8.0新增了通知渠道概念如果没有设置则通知无法在Android8.0的机器上显示
Notification常见方法:setContentTitle(String title)设置标题 setContentText(String text)设置文本内容 setSmallIcon(int icon)设置小图标
setLargeIcon(Bitmap icon)设置通知大图标 setColor(int argb)设置小图标的颜色 setContentIntent(PendingIntent intent)设置点击后的跳转意图
setAutoCancel(boolean bl)设置点击通知后自动清除通知 setWhen(long when)设置通知被创建的事件
setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.smile)) setColor(Color.parseColor("#FF0000"))
18、Toolbar:androidx.appcompat.widget.Toolbar(<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">)
app:title,app:navigationIcon,app:titleTextColor,app:titleMarginStart,app:subtitle,app:subtitleTextColor,app:logo
19、ViewPage(可左右滑动)
PagerAdapter:getCount();instantiateItem();isViewFromObject();destroyItem();