Android基础一 UI设计

一、UI设计

View类位于Android.view包当中;View类的子类一般都位于Android.widget包中

android:id属性,为组件设置一个唯一的标识。
例:android:id = "@+id/user"
android:background,设置背景颜色或者背景图片
android:padding, 设置上下左右四个方向的内边距
还可以具体设置四个方向不同的内边距,paddingLeft,paddingTop,paddingRight,paddingBotton
1、Viewgroup

Viewgroup.LayoutParams类里主要用两个属性:

android:layout_height(高)				android:layout_width(宽)

可设置为match_parent, wrap_content
Viewgroup.MarginLayoutParams类的属性有:

android:layout_marginTop; android:layout_marginLeft; android:layout_marginRight; android:layout_marginBottom 

可以设置外边距

  1. TextView
可以插入想要展现出来的text 
  1. Button
可以点击的按钮,会自动对其中的英文字母大写,可以设置textAllCaps为false
  1. ImageView
可以在布局中插入图片的空间,用android:src属性给ImageView制定一个图片,也可以在逻辑页面动态更改图片
  1. RecyclerView
用法:一、添加依赖库
	  二、在布局页面中使用RecyclerView控件
	  三、自定义适配器
	  四、 使用适配器往RecyclerView里传入数据
  1. fragment
碎片,更灵活地利用activity中的空间,和activity很像
  1. ScrollView
滚动条,直接套在外面就可以实现列表滚动,里面只能有一个直接子控件
  1. Switch
textOn:控件打开时显示的文字 
textOff:控件关闭时显示的文字 
thumb:控件开关的图片 
track:控件开关的轨迹图片 
typeface:设置字体类型 
switchMinWidth:开关最小宽度 
switchPadding:设置开关 与文字的空白距离 
switchTextAppearance:设置文本的风格 
checked:设置初始选中状态 
splitTrack:是否设置一个间隙,让滑块与底部图片分隔(API 21及以上) 
showText:设置是否显示开关上的文字(API 21及以上)

以上是一些基本设置,有可能会自定义开关样式,关于监听事件

aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked){
            //选中状态 可以做一些操作
        }else {
            //未选中状态 可以做一些操作
        }
    }
});
  1. ImageButton
不能设置按钮的文本内容,但它有src和background属性,来设置按钮的背景。
  1. ChipGroup

在这里插入图片描述

流式布局标签,谷歌提供了Chip,ChipGroup使其实现起来更加方便
使用方法:一、引入兼容包,应用MaterialComponents 主题
		 二、根据style,chip可分为四类,Action chip,Filter Chip,Entry Chip,Choice Chip
		 三、调整属性
		 四、对控件进行监听(监听方法和别的控件一样,就不再赘述)
		 	setOnClickListener(点击事件的监听)
		 	setOnCheckedChangeListener(选中状态的监听)
		 	setOnCloseIconClickListener(关闭按钮被点击的监听)
ChipGroup:使用 ChipGroup 可以方便的实现 流式布局效果
 -默认情况下, ChipGroup 中的 chip 会横向排列,当超过一行时会执行换行操作。
 -如果我们不想让 Chip 换行,那么为 ChipGroup 设置 app:singleLine=true,如果 Chip 会超过一行,则在外层包裹 HorizontalScrollView
 -只有当其中包裹的 Chip 是 checkable=true 时,才具有选中效果


  1. Chip
在9中已表明
  1. CheckBox
复选框,如果想要对选中的项进行操作,可以把选中项加入集合中,然后对集合进行操作
  1. RadioGroup
(radiogroup里套着radiobutton)
单选按钮组,互斥选择,比如性别选择。默认是竖直的,如果想要水平的,android:orientation="horizontal"即可。
监听控件:
        radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(RadioGroup group, int checkId) {
                 switch (checkId){
                     case R.id.nan:
                         Toast.makeText(MainActivity.this,"你选择的是:"+nan.getText(),Toast.LENGTH_SHORT).show();
                         break;
                     case R.id.nv:
                        Toast.makeText(MainActivity.this,"你选择的是:"+nv.getText(),Toast.LENGTH_SHORT).show();
                         break;
                     default:
                         break;
                 }
             }
         });
  1. RadioButton
内容含在12里
  1. ToggleButton
和switch差不多,都是开关,不过更倾向于按钮开关,而不是ios的ui那种左右滑动的开关
可供设置的属性:
android:disabledAlpha:设置按钮在禁用时的透明度
android:textOff:按钮没有被选中时显示的文字
android:textOn:按钮被选中时显示的文字 另外,除了这个我们还可以自己写个selector,然后设置下Background属性即可~
  1. FloatingActionButton

在这里插入图片描述

悬浮按钮,右下角那种,使用比较简单。
先添加依赖,compile 'com.android.support:design:26.0.0',然后引用控件即可。
可设置的属性:
android:src:FAB中显示的图标.
app:backgroundTint:正常的背景颜色 ,这里是ColorStateList类型
app:rippleColor:按下时的背景颜色
app:elevation:正常的阴影大小
app:pressedTranslationZ:按下时的阴影大小
app:layout_anchor:设置FAB的锚点,即以哪个控件为参照设置位置
app:layout_anchorGravity:FAB相对于锚点的位置
app:fabSize:FAB的大小,normal或mini(分别对应56dp和40dp)
app:borderWidth:边框大小,最好设置成0dp否则会有边框
android:clickable:一定要设置成true否则没有点击效果
  1. WebView
可以在自己的应用中打开网页而不是打开浏览器
使用方法:
1、在布局中使用WebView控件
2、 调用webView的getSetting方法可以去设置浏览器的属性
3、调用webView的setWebViewClient()方法并传入一个WebViewClient实例。
4、loadurl方法可以传入要跳转的网址
5、还需要获取权限
  1. VideoView
播放视频的控件
  1、获取权限
  		SD卡权限,也有可能需要网络权限
  2、保持屏幕常亮
  		android:keepScreenOn="true"
  3、xml布局里添加VideoView
  <VideoView
        android:id="@+id/video_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
  4、初始化配置VideoView
  	略,详见https://www.cnblogs.com/guanxinjing/p/11177739.html
  5、播放视频
	  mVideoView.start();
  6、暂停视频
  	mVideoView.pause();
  7、获取播放时间信息
  	mVideoView.getDuration();//获取视频的总时长
		mVideoView.getCurrentPosition();//获取视频的当前播放位置
  8、停止视频
	  mVideoView.stopPlayback();//停止播放视频,并且释放
		mVideoView.suspend();//在任何状态下释放媒体播放器
  1. CalendarView
显示日历控件
在布局文件中添加控件
监听事件
 calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
                //显示用户选择的日期
                Toast.makeText(CalendarviewActivity.this,year + "年" + month + "月" + dayOfMonth + "日",Toast.LENGTH_SHORT).show();
            }
        });
该控件自定义程度很大,可自定义的东西也非常多,详见
https://blog.csdn.net/huanghaibin_dev/article/details/79040147
https://www.jianshu.com/p/0c06f71d0be8 
  1. ProgressBar
旋转的进度条,可以在进度条到终点时,设置progressBar.setVisibility(View.GONE);使其变得不可见
  1. ProgressBar(Horizontal)
水平进度条
  1. SeekBar
进度条,可以手动拖动的,视频进度条。
在进度条下面设置一个textview来显示进度
android:thumb设置图标
android:max="200"设置最大值为200
监听控件:
 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {//进度条改变
                textView.setText(String.valueOf(i-100));//int转化为string
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });

  1. SeekBar(Discrete)
    在这里插入图片描述
Github上的一个开源控件DiscreteSeekBar,使用方法依然是添加依赖引用控件,详见https://blog.csdn.net/u012702547/article/details/50072867
  1. RatingBar
    在这里插入图片描述
星级评分条,详见
https://blog.csdn.net/hfut_why/article/details/90644971
https://www.runoob.com/w3cnote/android-tutorial-ratingbar.html

控制星星数量的属性:android: numStar=" "
默认点亮星星数量:android:rating=" "
最少改变星星数量为1:android:stepSize=“1”
星星数量不可改变:android:isIndicator=“true”

  1. SearchBar

  2. SearchView

Android原生搜索框,详见
https://www.cnblogs.com/de1021/p/11845109.html
https://blog.csdn.net/loverleslie/article/details/91952774
  1. TextureView
TextureView 是一个由于显示数据流的UI控件,用途是播放视频;显示相机预览。它可以当做普通的View控件使用,在布局、动画和变换(平移、缩放、旋转等)中非常方便,具体使用方式见:
https://blog.csdn.net/Andreaw/article/details/88761062
  1. SurfaceView
  2. Horizontal Divider
水平分割线,android:divider = " "
divider可以是图片文件,也可以是xml绘制的shape。
使用shape的时候一定要添加<size> ,一定要添加color,即使是透明也要写上
android:showDividers = "middle|end|beginning|none"
https://blog.csdn.net/bingshushu/article/details/51444206
  1. Vertical Divider
竖直分割线,同上
  1. ConstraintLayout
约束布局,解决布局嵌套过多的问题 ,里面的控件的定位都是相对于其他控件的
https://www.jianshu.com/p/17ec9bd6ca8a
  1. Guideline(Horizontal)
辅助线,默认是GONE,也就是看不见的
Guideline还有三个重要的属性,每个Guideline只能指定其中一个:
1、layout_constraintGuide_begin,指定左侧或顶部的固定距离,如100dp,在距离左侧或者顶部100dp的位置会出现一条辅助线
2、layout_constraintGuide_end,指定右侧或底部的固定距离,如30dp,在距离右侧或底部30dp的位置会出现一条辅助线
3、layout_constraintGuide_percent,指定在父控件中的宽度或高度的百分比,如0.8,表示距离顶部或者左侧的80%的距离。
  1. Guideline(Vertical)
同上
  1. LinearLayout(horizontal)
过于基础,略
  1. LinearLayout(vertical)
过于基础,略
  1. FrameLayout
过于基础,略
  1. TableLayout
过于基础,略
  1. TableRow

  2. Space

Space 是一个轻量级的 View 子类,可用于在通用布局中的组件之间创建间隙。适用场景:填充没有内容处,如果有软键盘弹出会压缩space,不至于使原有的控件无法显示
https://www.jianshu.com/p/2cd35845b3b3
  1. Spinner

  2. HorizontalScrollView

横向滑动
  1. NestedScrollView
支持嵌套滑动的scrollview,无论作为父控件还是子控件。
  1. ViewPager
ViewPager 是android support V4 包中的类,这个类可以让用户左右切换当前的View

ViewPager直接继承自ViewGroup类,它是一个容器类,可以在其中添加其他的View
ViewPager类需要一个PagerAdapter适配器,来为他提供数据。
ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类
  1. CardView
卡片视图,更立体
  1. AppBarLayout
在这里插入代码片
  1. BottomAppBar

在这里插入图片描述

用来实现这样的效果,简单使用方法:https://www.jianshu.com/p/20dbe17d8c91
  1. NavigationView
左侧菜单栏,之前做过
  1. **BottomNavigationView
底部导航栏
  1. Toolbar
顶部工具栏,https://www.jianshu.com/p/ae0013a4f71a
  1. TabLayout
实现分tab导航,把不同功能模块划分开来
  1. TabItem

  2. ViewStub

  3. include
    不知道是不是引用自定义控件

  4. NavHostFragment

  5. view

  6. requestFocus

标签用于指定屏幕内的焦点View。此标签在哪里,哪里就是焦点
  1. 图像切换器组件ImageSwitcher
这个控件实现的效果就是手机相册,或者各种应用查看图片时,左右滑动查看图片的效果。
设置淡出:
is.setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_out));
android.R.anim.fade_out是系统自带的淡出动画效果,android.R.anim.fade_in即为淡入
//设置图片切换工厂
is.setFactory(new ViewSwitcher.ViewFactory(){
	@Override
	public View makeView(){
		//创建ImageView对象,设置图片资源,返回ImageView对象
	}
});
//设置图片的监听器,然后在重写的onClick方法中,利用setImageResource方法,设置切换后的图片资源。

控制UI界面的方法:

推荐使用XML布局文件控制UI界面,方法:
  1. 在Android应用的res/layout 目录下编写XML布局文件
  2. 在Activity中使用以下Java代码显示XML文件中布局的内容
setContentView(R.layout.activity_main);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值