一个十分简洁实用的MD风格的UI主框架
MainActivity
public class MainActivity extends AppCompatActivity {@BindView(R.id.toolbar) Toolbar toolbar;@BindView(R.id.tabs) TabLayout tabLayout;@BindView(R.id.appbar) AppBarLayout appbar;@BindView(R.id.viewpager) ViewPager viewPager;@BindView(R.id.fab) FloatingActionButton fab;//浮动操作按钮@BindView(R.id.nav_view) NavigationView navigationView;//@BindView(R.id.drawer_layout) DrawerLayout drawerLayout;//侧滑布局@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);setSupportActionBar(toolbar);getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);getSupportActionBar().setDisplayHomeAsUpEnabled(true);navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {menuItem.setChecked(true);drawerLayout.closeDrawers();return true;}});Adapter adapter = new Adapter(getSupportFragmentManager());adapter.addFragment(new CheeseListFragment(), "白乾涛");adapter.addFragment(new CheeseListFragment(), "包青天");viewPager.setAdapter(adapter);tabLayout.setupWithViewPager(viewPager);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.sample_actions, menu);return true;}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {switch (AppCompatDelegate.getDefaultNightMode()) {case AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM:menu.findItem(R.id.menu_night_mode_system).setChecked(true);break;case AppCompatDelegate.MODE_NIGHT_AUTO:menu.findItem(R.id.menu_night_mode_auto).setChecked(true);break;case AppCompatDelegate.MODE_NIGHT_YES:menu.findItem(R.id.menu_night_mode_night).setChecked(true);break;case AppCompatDelegate.MODE_NIGHT_NO:menu.findItem(R.id.menu_night_mode_day).setChecked(true);break;}return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case android.R.id.home:drawerLayout.openDrawer(GravityCompat.START);return true;case R.id.menu_night_mode_system:setNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);break;case R.id.menu_night_mode_day:setNightMode(AppCompatDelegate.MODE_NIGHT_NO);break;case R.id.menu_night_mode_night:setNightMode(AppCompatDelegate.MODE_NIGHT_YES);break;case R.id.menu_night_mode_auto:setNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);break;}return super.onOptionsItemSelected(item);}private void setNightMode(@AppCompatDelegate.NightMode int nightMode) {AppCompatDelegate.setDefaultNightMode(nightMode);if (Build.VERSION.SDK_INT >= 11) recreate();}@OnClick(R.id.fab)public void onViewClicked() {Snackbar.make(fab, "Here's a Snackbar", Snackbar.LENGTH_LONG).show();}static class Adapter extends FragmentPagerAdapter {private final List<Fragment> mFragments = new ArrayList<>();private final List<String> mFragmentTitles = new ArrayList<>();public Adapter(FragmentManager fm) {super(fm);}public void addFragment(Fragment fragment, String title) {mFragments.add(fragment);mFragmentTitles.add(title);}@Overridepublic Fragment getItem(int position) {return mFragments.get(position);}@Overridepublic int getCount() {return mFragments.size();}@Overridepublic CharSequence getPageTitle(int position) {return mFragmentTitles.get(position);}}}
MainActivity布局
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><include layout="@layout/include_list_viewpager"/><!--侧滑布局--><android.support.design.widget.NavigationViewandroid:id="@+id/nav_view"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"android:fitsSystemWindows="true"app:headerLayout="@layout/nav_header"app:menu="@menu/drawer_view"/></android.support.v4.widget.DrawerLayout>
MainActivity内容区域布局
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/main_content"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.design.widget.AppBarLayoutandroid:id="@+id/appbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:layout_scrollFlags="scroll|enterAlways|snap"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/><android.support.design.widget.TabLayoutandroid:id="@+id/tabs"android:layout_width="match_parent"android:layout_height="wrap_content"/></android.support.design.widget.AppBarLayout><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"/><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="@dimen/fab_margin"android:src="@drawable/ic_done"/></android.support.design.widget.CoordinatorLayout>
Fragment
public class CheeseListFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.fragment_cheese_list, container, false);recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));recyclerView.setAdapter(new MyAdapter(getActivity(), getRandomSublist()));return recyclerView;}private List<String> getRandomSublist() {String[] array = Cheeses.sCheeseStrings;ArrayList<String> list = new ArrayList<String>();while (list.size() < 30) {list.add(array[new Random().nextInt(array.length)]);}return list;}}
Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {private List<String> mList;private Context context;public MyAdapter(Context context, List<String> mList) {this.mList = mList;this.context = context;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.list_item, parent, false));}@Overridepublic void onBindViewHolder(final ViewHolder holder, int position) {holder.mTextView.setText(mList.get(position));holder.ll_item.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(context, CheeseDetailActivity.class);intent.putExtra(CheeseDetailActivity.EXTRA_NAME, mList.get(holder.getAdapterPosition()));context.startActivity(intent);}});Glide.with(holder.mImageView.getContext()).load(Cheeses.getRandomCheeseDrawable()).fitCenter().into(holder.mImageView);}@Overridepublic int getItemCount() {return mList.size();}static class ViewHolder extends RecyclerView.ViewHolder {@BindView(R.id.avatar) CircleImageView mImageView;@BindView(R.id.text) TextView mTextView;@BindView(R.id.ll_item) View ll_item;ViewHolder(View view) {super(view);ButterKnife.bind(this, view);}}}
附件列表
一个十分简洁实用的MD风格的UI主框架的更多相关文章
- Android 模仿QQ风格的 UI
本文内容 环境 演示模仿QQ风格的界面 本文主要演示的是 UI,如何模仿 QQ 风格的界面.虽然这个 UI 跟现在的QQ空间有点差别,但是也能学到很多东西. 下载 Demo 环境 Windows 7 ...
- LTUI v1.1, 一个基于lua的跨平台字符终端UI界面库
简介 LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了 ...
- [C语言]一个很实用的服务端和客户端进行TCP通信的实例
本文给出一个很实用的服务端和客户端进行TCP通信的小例子.具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考. (1)客户端程序,编写一个文件clie ...
- Android 模仿QQ空间风格的 UI(转)
本文内容 环境 演示模仿QQ空间风格的UI 虽然这个 UI 跟现在的QQ空间有点差别,但是也能学到很多东西. 下载 Demo 环境 Windows 7 64 位 Eclipse ADT V22.6.2 ...
- Android 模仿QQ空间风格的 UI
本文内容 环境 演示模仿QQ空间风格的UI 虽然这个 UI 跟现在的QQ空间有点差别,但是也能学到很多东西. 下载 Demo 环境 Windows 7 64 位 Eclipse ADT V22.6.2 ...
- 各种Android UI开源框架 开源库
各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...
- 10个顶级的CSS UI开源框架
随着CSS3和HTML5的流行,我们的WEB页面不仅需要更人性化的设计理念,而且需要更酷的页面特效和用户体验.作为开发者,我们需要了解一些宝贵的CSS UI开源框架资源,它们可以帮助我们更快更好地实现 ...
- web前端开发常用的10个高端CSS UI开源框架
web前端开发常用的10个高端CSS UI开源框架 随着人们对体验的极致追求,web页面设计也面临着新的挑战,不仅需要更人性化的设计理念,还需要设计出更酷炫的页面.作为web前端开发人员,运用开源 ...
- [转]10个顶级的CSS UI开源框架
随着CSS3和HTML5的流行,我们的WEB页面不仅需要更人性化的设计理念,而且需要更酷的页面特效和用户体验.作为开发者,我们需要了解一些宝贵的CSS UI开源框架资源,它们可以帮助我们更快更好地实现 ...
随机推荐
- C++ 实现的一个打印日历程序
C++ 实现的一个打印日历程序 说明:总共有三个文件 1.month.h 为定义函数的头文件 2.month.cpp 为函数的实现代码 3.mainprog.cpp 为主函数的实现代码 month.h ...
- css控制默认滚动条样式
针对webkit内核的浏览器,使用伪类来改变滚动条的默认样式,详情如下: 滚动条组成部分 1. ::-webkit-scrollbar 滚动条整体部分 2. ::-webkit-scrollbar-t ...
- 从Mybatis的视角去看Bean的初始化流程
不涉及Spring完整的启动流程,仅仅从Mybatis的视角去分析几个关键的方法,找到Mybatis是如何通过这几个扩展点植入进去的,反过来看Spring是如何设计,埋下这些伏笔,实现其可扩展性. s ...
- Docker应用系列(三)| 构建Consul集群
本示例基于Centos 7,在阿里云的三台机器上部署consul集群,假设目前使用的账号为release,拥有sudo权限. 由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速 ...
- 全景图从拍摄到 online
全景图从拍摄到 online Panorama, CSS3, Canvas, 3D 2015-11-04 拍摄设备 照片拼接 制作 3D Cube Demo 拍摄设备 电动自动全景云台 Gigapan ...
- AtCoder Regular Contest 80
链接 C. 4-adjacent 给定序列$a_i$,询问是否存在一个排列,满足$a_{p[i]}* a_{p[i + 1]}$是4的倍数 贪心构造 首先把只是2的倍数的数拿出来,放在最右边 前面把是 ...
- Android开发AlertDialog解析
打开源码,首先映入眼帘的是三个构造方法,但这三个构造方法都是protected类型的, 可见,不允许我们直接实例化AlertDialog. 因此,我们再看别的有没有方法.可以实例化 再仔细一看,发现一 ...
- [CF115E]Linear Kingdom Races
[CF115E]Linear Kingdom Races 题目大意: 有\(n(n\le10^5)\)个物品,编号为\(1\sim n\).选取第\(i\)个物品需要\(c_i\)的代价.另外有\(m ...
- js异步处理工作机制(setTimeout, setInterval)
经常谈到异步,但是发现自己一直没深入理解setTimeout, setInterval,逛论坛的时候发现了这篇好文章,分享一下. ————————————————————以下为原文—————————— ...
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟
D. Little Artem and Dance 题目连接: http://www.codeforces.com/contest/669/problem/D Description Little A ...