• Android之ASD组件(一)


      Google在android5.0之后推出新设计标准Material Design,为了能在低版本上使用Material Design,google发布了Android Support Design支持库。

      下面我们看看该库中提供的一些组件的用法

      SnackBar该组件是介于Toast和Dialog之间的一种提示信息组件,用法和Toast有点类似。SnackBar中常用的方法如下:

    1、public static Snackbar make(@NonNull View view, @StringRes int resId, @Duration int duration):静态方法,使用字符串资源构建一个SnackBar对象
    2、public static Snackbar make(@NonNull View view, @NonNull CharSequence text,
            @Duration int duration) :静态方法,用于构建一个SnackBar对象。
    3、public Snackbar setAction(@StringRes int resId, View.OnClickListener listener):设置SnackBar的动作
    4、public Snackbar setAction(CharSequence text, final View.OnClickListener listener):设置SnackBar动作
    5、public Snackbar setActionTextColor(ColorStateList colors):设置操作文字颜色
    6、public void show():显示SnackBar。
      具体使用案例代码如下:
    Snackbar.make(v,"别乱点!!!!",Snackbar.LENGTH_LONG).setAction("OK", new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            show.setText("你点了什么?");
        }
    }).show();

       FloatingActionButton组件是一个项目中常见的圆形按钮,该组件是继承自ImageView,该组件提供了一些属性用于设置样式,具体如下:

    1、app:borderWidth:边框的宽度

    2、app:backgroundTint:FloatingActionButton的背景色

    3、app:rippleColor:FloatingActionButton被点击时的颜色

    4、app:fabSize:FloatingActionButton的大

    5、app:elevation:FloatingActionButton的海拔高度

      CoordinatorLayout组件是一个布局组件,实现了Material Design中滚动动画效果,主要功能一是作为布局容器,而是协调子View实现滚动动画效果。

      使用以上三个组件完成案例效果如下图所示:


      具体的布局文件内容如下:

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
    
        <TextView
            android:id="@+id/show"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp" />
    
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/btnFloating"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end|bottom"
            android:layout_margin="20dp"
            android:src="@mipmap/ic_launcher"
            app:backgroundTint="#ff0000"
            app:borderWidth="5dp"
            app:elevation="10dp"
            app:fabSize="normal"
            app:pressedTranslationZ="5dp"
            app:rippleColor="#00ff00" />
    
    </android.support.design.widget.CoordinatorLayout>

      TabLayout是tab容器,有了TabLayout我们可以方便的实现Tabs+ViewPager+Fragment的经典界面结构。TabLayout是继承了HorizontalScrollView,所有具备ScollView的特性。使用如下属性可定制Tab的显示样式

    1、  app:tabIndicatorColor:指示器的颜色
    2、  app:tabIndicatorHeight:指示器的高度
    3、  app:tabSelectedTextColor:选中Tab的文字颜色
    4、  app:tabMode:Tab的模式
    5、  app:tabTextAppearance:Tab字体样式
      使用TabLayout案例的具体展示效果如下:

      在该案例中要注意的地方有两点:

    1、ViewPager的adapter要实现getPageTitle方法,TabLayout中的Tab中文字内容从该方法中获取。
    2、要先为ViewPager设置adapter,后再依次调用TabLayout的方法
      a)  setTabsFromPagerAdapter
      b)  setupWithViewPager
      具体代码如下:
    public class TabsActivity extends AppCompatActivity {
    
        private Toolbar toolbar;
        private TabLayout tabs;
        private ViewPager viewPager;
    
        private List<View> pagerData ;
        String[] titles=new String[]{"推荐","热点","烟台","社会","视频"};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.tabs_layout);
            toolbar = (Toolbar)findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            ActionBar actionBar = getSupportActionBar();
            actionBar.setTitle("杰瑞教育");
            actionBar.setDisplayHomeAsUpEnabled(true);
    
            tabs = (TabLayout)findViewById(R.id.tabs);
            viewPager=(ViewPager)findViewById(R.id.viewPager);
    
    
            initPagerData();
            MyPageAdapter adapter = new MyPageAdapter();
            viewPager.setAdapter(adapter);
            tabs.setTabsFromPagerAdapter(viewPager.getAdapter());
            tabs.setupWithViewPager(viewPager);
        }
    
        private void initPagerData(){
            pagerData = new ArrayList<>();
            for(int i=0;i<titles.length;i++) {
                TextView textView = new TextView(this);
                textView.setText(titles[i]);
                pagerData.add(textView);
            }
        }
    
        private class MyPageAdapter extends PagerAdapter{
            @Override
            public int getCount() {
                return pagerData.size();
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view==object;
            }
    
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view = pagerData.get(position);
                container.addView(view);
                return view;
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView(pagerData.get(position));
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                return titles[position];
            }
        }
    }
    作者:杰瑞教育
    出处:http://www.cnblogs.com/jerehedu/ 
    版权声明:本文版权归杰瑞教育技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    技术咨询:JRedu技术交流
     
  • 相关阅读:
    Elasticsearch深度应用(下)
    MongoDB基础入门
    MongoDB慢查询与索引
    Elasticsearch深度应用(上)
    Chrome实现自动化测试:录制回放网页动作
    Allure测试报告怎么设置
    接口测试中,应不应该用数据库
    Python函数默认参数避坑指南
    Python ModuleNotFoundError: No module named通俗的解释和方法
    怎么学自动化测试
  • 原文地址:https://www.cnblogs.com/jerehedu/p/5063281.html
Copyright © 2020-2023  润新知