博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个Demo学会用Android兼容包新控件
阅读量:6699 次
发布时间:2019-06-25

本文共 4368 字,大约阅读时间需要 14 分钟。

hot3.png

效果动图GIF:

学习内容

通过本实例可以学习到以下内容:

  • Drawerlayout和NavigationView实现优雅的Google范儿侧边栏;
  • 新控件CoordinatorLayout、AppBarLayout、Toolbar、FloatingActionButton的用法,以及Toolbar的渐变隐藏动画效果;
  • 官方Tabs组件TabLayout和ViewPager结合实现主界面内容区域;
  • SwipeRefreshLayout和RecyclerView结合实现下拉刷新,以及RecyclerView的数据适配器RecyclerView.Adapter的用法,还有RecyclerView中item的点击事件的实现方法;
  • 卡片式CardView的用法;
  • 类似Toast的新控件Snackbar的用法。

布局文件

学习Android解释再多代码都没有用,因为解释过了还是不会用。因此,我们这里将布局文件XML源码贴出来供学习,放心,所有知识点都已经注释在源码中。

styles.xml源码

colorPrimary、colorPrimaryDark、colorAccent、textColorPrimary的含义,请看博文

主布局activity_my.xml源码(重点)

content_main.xml源码(重点)

frag_main.xml源码(Fragment的布局)

item_main.xml源码(RecyclerView中item)

menu_nav.xml的源码(NavagationView中菜单)

header_nav.xml源码(NavagationView的head)

Java代码

Java代码写法比较简单,这里只给出RecyclerView.Adapter的写法(包括item点击事件)。

RecyclerView.Adapter写法源码

package com.sunjiajia.androidnewwidgetsdemo.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.sunjiajia.androidnewwidgetsdemo.R;import java.util.ArrayList;import java.util.List;/** * Created by Monkey on 2015/6/29. */public class MyRecyclerViewAdapter extends RecyclerView.Adapter
{ // 点击事件接口 public interface OnItemClickListener { void onItemClick(View view, int position); void onItemLongClick(View view, int position); } public OnItemClickListener mOnItemClickListener; public void setOnItemClickListener(OnItemClickListener listener) { this.mOnItemClickListener = listener; } public Context mContext; public List
mDatas; public LayoutInflater mLayoutInflater; public MyRecyclerViewAdapter(Context mContext) { this.mContext = mContext; mLayoutInflater = LayoutInflater.from(mContext); // 这里是模拟数据。 mDatas = new ArrayList<>(); for (int i = 'A'; i <= 'z'; i++) { mDatas.add((char) i + ""); } } /** * 创建ViewHolder */ @Override public MyRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View mView = mLayoutInflater.inflate(R.layout.item_main, parent, false); MyRecyclerViewHolder mViewHolder = new MyRecyclerViewHolder(mView); return mViewHolder; } /** * 绑定ViewHoler,给item中的控件设置数据 */ @Override public void onBindViewHolder(final MyRecyclerViewHolder holder, final int position) { //点击事件在这里实现,主要是利用RecyclerView中填充的布局控件可以被点击这个原理 if (mOnItemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onItemClick(holder.itemView, position); } }); // 长点击事件 holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { mOnItemClickListener.onItemLongClick(holder.itemView, position); return true; } }); } holder.mTextView.setText(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); }}

MyRecyclerViewHolder.java源码

package com.sunjiajia.androidnewwidgetsdemo.adapter;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.TextView;import com.sunjiajia.androidnewwidgetsdemo.R;/** * Created by Monkey on 2015/6/29. */public class MyRecyclerViewHolder extends RecyclerView.ViewHolder {    public TextView mTextView;    public MyRecyclerViewHolder(View itemView) {        super(itemView);        mTextView = (TextView) itemView.findViewById(R.id.id_textview);    }}

结语

在源码中学习Android,是有种身临其境的感觉的。

整个Demo的源码我放在了GitHub上,谢谢star一下~

在看源码过程中如果发现什么问题,请在留言,看到一定回复。

源码地址:

转载于:https://my.oschina.net/zhushihui/blog/660144

你可能感兴趣的文章
1-3-顺时针旋转矩阵
查看>>
可行性研究
查看>>
Linux文件查找命令find,xargs详述
查看>>
Spring WebFlux 响应式编程学习笔记(一)
查看>>
Dynamics CRM 2015 站点地图公告配置实体显示名称的变更
查看>>
java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
查看>>
commons-fileupload、smartUpload和commons-net-ftp
查看>>
Simulated Annealing(模拟退火算法)
查看>>
面向对象-多态,反射
查看>>
sort函数
查看>>
用来做 favicon 的站点
查看>>
去除vue项目中的#及其ie9兼容性
查看>>
processon完全装逼指南
查看>>
理解什么是前后端分离
查看>>
testng.xml文件配置
查看>>
angular自定义指令详解
查看>>
C#常用单元测试框架比较:XUnit、NUnit和Visual Studio(MSTest)
查看>>
Android动画之逐帧动画(FrameAnimation)详解
查看>>
Android Studio 超级简单的打包生成apk
查看>>
Linux命令之useradd和userdel(添加、删除用户)
查看>>