Studio安装
2.3 第一次打开需要配置
2.3.1 在Android Studio安装目录下的 bin 目录下,找到 idea.properties 文件,在文件最后
追加 disable.android.first.run=true,避开连接谷歌服务器更新SDK
代码模板
logi
sout 打印
shift+F6改名
ctrl+H 查看继承类
ctrl+R 全局替换
ctrl+alt+M 提取方法
导入开源库
main 目录 下 java 和 res 和 清单文件 修改过时的API
你可以使用 ALT-UP 和 ALT-DOWN实现按照“节点”来扩大和缩小选择范围 - 让你选择代码的时候更加高效。
同时,ALT-SHIFT-UP 和 ALT-SHIFT-DOWN则可以让你当前所在行上移或者下移,省去了通过复制粘贴调整顺序的麻烦。
全局替换
Android Studio正是基于IntelliJ之上。Android Studio最值得记住的快捷键是CMD-SHIFT-A(如果你是Windows或者Linux的pc则是CTRL-SHIFT-A )。
开源框架:
butterknife 插件
gsonformat 插件
快捷键
Android.5.0 L体验
卡片效果
水波纹效果
Android Material
RecyclerView CardView
material design
Marshmallow 棉花糖 安卓23M 6.0
lollipop 棒棒糖 安卓21,22 L 5.0 5.1
安卓M 6.0 material design
安卓5.0L体验
特点 : 卡片效果 ; 水波纹效果
安卓型号
ActionBar是什么?
升级版本的title.可以存放更多的控件的布局/工具栏。
开发者可以添加新的元素与编写对应的事件。
也可以删除ActionBar
ActionBar actionBar = getSupportActionBar();//获取当前升级后标题栏
//设置一个标题
actionBar.setTitle("谷歌市场");
setContentView(R.layout.activity_main);
写一个类继承于AppCompatActivity
获取ActionBar actionbar = getSupportActionBar();
res 目录下新建 menu文件夹 展示title
onCreateOptionsMenu 创建菜单
appNs 自定义属性 自动导入
showAsAction 显示方式1.always 显示 2.never 默认值 3.ifRoom 如果有空间 就去展示
处理ActionBar的点击事件
onOptionsItemSelected()
标题上的元素
一。布局元素
C:\Users\Administrator\Desktop\DemoLM\001.ActionBar\src\main\res\menu\main_menu.xml
?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--menu是ActionBar上面元素的集合
元素是item
id控件的id
title显示字符串
icon显示图标
MenuInflater :菜单的打气筒
showAsAction显示方式1.always 显示 2.ifRoom有空间就显示 3.never默认值 显示在隐藏菜单
-->
<item android:id="@+id/item1" android:title="元素1"
app:showAsAction="always"
android:icon="@mipmap/ic_launcher"/>
<item android:id="@+id/item2" android:title="元素2"
app:showAsAction="ifRoom"
android:icon="@mipmap/ic_launcher"/>
<item android:id="@+id/item3" android:title="元素3"
app:showAsAction="never"
android:icon="@mipmap/ic_launcher"/>
<item android:id="@+id/item4" android:title="元素4"
android:icon="@mipmap/ic_launcher"/>
</menu>
二.初始化与事件
//ActionBar元素的初始化方面
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//1.元素
//2.集合
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;//
}
//处理ActionBar元素的点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Ctrl+D复制行
switch (item.getItemId()) {
case R.id.item1:
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.item2:
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.item3:
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.item4:
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
菜单支持侧滑
1.SlidingMenu第三开源的侧滑控件
2.SlidingDrawer抽屉控件。
3.DrawerLayout:新的布局,可以添加两个元素(菜单与页面内容)
变量 android:layout_gravity=”start” 左侧 end 右侧
使用方法:
android.support.v4.widget.DrawerLayout 包裹两个元素
android:layout_gravity=”start”去标记菜单
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context="com.itheima.a001actionbar.MainActivity">
<FrameLayout
android:id="@+id/content"
android:background="#FFF000"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<FrameLayout
android:id="@+id/menu"
android:background="#8EC349"
android:layout_gravity="start"
android:layout_width="200dp"
android:layout_height="match_parent"/>
</android.support.v4.widget.DrawerLayout>
配置5.0主题相关的颜色
parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<!--配置actionbar背景颜色-->
<item name="colorPrimary">@color/colorPrimary</item>
<!--手机状态栏的颜色colorPrimaryDark-->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
#换肤(切换theme)
替换软件或者系统的"皮肤"--theme
步骤一。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int theme=getSharedPreferences("theme.xml",MODE_PRIVATE).getInt("theme",R.style.GreenTheme);
setTheme(theme);
步骤二。重启activity不让用户发现(去掉动画)
int []themes=new int[]{R.style.CyanTheme,R.style.PinkTheme,R.style.BrownTheme,R.style.BlueTheme};
public void changeSkin(View view)
{
SharedPreferences.Editor editor = getSharedPreferences("theme.xml", MODE_PRIVATE).edit();
Random random=new Random();
editor.putInt("theme",themes[random.nextInt(4)]);
editor.commit();
startActivity(new Intent(this,MainActivity.class));
finish();
//覆盖activity动画效果
overridePendingTransition(0,0);
}
旋转按钮
是一个联动控件。(在菜单与箭头之间产生联动。)
ActionBarDrawerToggle
一。创建按钮 绑定给 DrawerLayout
drawer = (DrawerLayout) findViewById(R.id.activity_drawer);
actionBar.setDisplayHomeAsUpEnabled(true);//让Actionbar去初始化箭头按钮
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(activity, drawer, R.string.open, R.string.close);
actionBarDrawerToggle.syncState();//同步 替换原有按钮
drawer.addDrawerListener(actionBarDrawerToggle);
二。编写ActionBar中的元素android.R.id.home;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Ctrl+D复制行
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(this, "旋转箭头", Toast.LENGTH_SHORT).show();
//Ctrl+Alt+L 格式化代码
//Ctrl+Alt+F 将局部变量生成成员变量
View menu=findViewById(R.id.menu);
if (drawer.isDrawerOpen(menu)) {
drawer.closeDrawer(menu);
} else {
drawer.openDrawer(menu);
}
break;
}
}
ActionBar 的logo显示
//设置logo
actionBar.setLogo(R.mipmap.ic_launcher);
//加两个条件才能显示出来
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayUseLogoEnabled(true);
练习完整代码
public class MainActivity extends AppCompatActivity {
@BindView(R.id.butt)
Button butt;
@BindView(R.id.content)
FrameLayout menu;
@BindView(R.id.activity_main)
DrawerLayout activityMain;
private int[] themes = new int[]{R.style.BlueGreyTheme, R.style.BlueTheme, R.style.CyanTheme, R.style.PinkTheme};
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int theme = getSharedPreferences("theme.xml", MODE_PRIVATE).getInt("theme", R.style.CyanTheme);
setTheme(theme);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("捕获");
setContentView(R.layout.activity_main);
//让actionbar 去初始化小箭头
actionBar.setDisplayHomeAsUpEnabled(true);
//1上下文
//2.侧滑菜单
//3.R.string. 开启
//4.R.string 关闭
//初始化 DrawerLayout
drawer = (DrawerLayout) findViewById(R.id.activity_main);
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.open, R.string.close);
//同步 替换原有按钮
drawerToggle.syncState();
//给DrawerLayout添加监听
drawer.addDrawerListener(drawerToggle);
//Ctrl+Alt+L 格式化代码
//Ctrl+Alt+F 将局部变量生成成员变量
ButterKnife.bind(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mani_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu2:
Toast.makeText(this, "新闻", Toast.LENGTH_SHORT).show();
break;
case R.id.menu3:
Toast.makeText(this, "NBA", Toast.LENGTH_SHORT).show();
break;
case R.id.menu4:
Toast.makeText(this, "财经", Toast.LENGTH_SHORT).show();
break;
case R.id.menu5:
Toast.makeText(this, "生活", Toast.LENGTH_SHORT).show();
break;
case android.R.id.home:
Toast.makeText(this, "旋转箭头", Toast.LENGTH_SHORT).show();
View id = findViewById(R.id.menu);
if (drawer.isDrawerOpen(id)){
drawer.closeDrawer(id);
}else{
drawer.openDrawer(id);
}
break;
}
return super.onOptionsItemSelected(item);
}
@OnClick(R.id.butt)
public void onClick() {
SharedPreferences.Editor edit = getSharedPreferences("theme.xml", MODE_PRIVATE).edit();
Random random = new Random();
edit.putInt("theme", themes[random.nextInt(4)]);
edit.commit();
startActivity(new Intent(this, MainActivity.class));
finish();
overridePendingTransition(0, 0);
}
RecyclerView
去中央库下载
compile ‘com.android.support:recyclerview-v7:24.0.0’
RecyclerView替换 ListView 和GridView
getView优化
1.convertView 2.viewHolder优化findviewbyid
layoutManager:排列方式
列表:LinearLayoutManager
网络:GridLayoutManager
瀑布流:StaggerGridLayoutManager
列表:LinearLayoutManager 纵向
RecyclerView.LayoutManager layout = new LinearLayoutManager(this);
//先设置LayoutManager 管理者
rv.setLayoutManager(layout);
MyAdapter adapter = new MyAdapter();
rv.setAdapter(adapter);
RecyclerView.Adapter
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<String> list = new ArrayList<>();
public MyAdapter() {
for (int i = 0; i < 20; i++) {
list.add("中心" + i);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(parent.getContext(), R.layout.item, null);
MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
MyViewHolder mvh = (MyViewHolder) holder;
mvh.tv.setText(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
static class MyViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.iv)
ImageView iv;
@BindView(R.id.tv)
TextView tv;
public MyViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
列表:LinearLayoutManager 纵向
//1.上下文
//2.方向
//3.倒排 1->10 true 10 -->1
RecyclerView.LayoutManager layout = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);
rv.setLayoutManager(layout);
MyAdapter adapter = new MyAdapter();
rv.setAdapter(adapter);
网络:GridLayoutManager 有横向和纵向
RecyclerView.LayoutManager layout = new GridLayoutManager(this, 3, LinearLayoutManager.HORIZONTAL, true);
rv.setLayoutManager(layout);
MyAdapter adapter = new MyAdapter();
rv.setAdapter(adapter);
瀑布流:StaggerGridLayoutManager 有横向和纵向
// 参数1 列数或者横数 参数2 方向
RecyclerView.LayoutManager layout = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL);
rv.setLayoutManager(layout);
MyAdapter adapter = new MyAdapter();
rv.setAdapter(adapter);
CardView
是升级的FrameLayout.
CardView 5.0新控件 v7 .从FrameLayout扩展来的。
存放在兼容包。可以运行低版本。
1.阴影
2.圆角
3.背景颜色。
<CardView> 包裹起来
视图
<CardView>
中央库下载:android.support.v7.widget.CardView
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="100dp"
android:layout_height="100dp"
app:cardCornerRadius="14dp"
app:cardElevation="10dp"
app:cardUseCompatPadding="true"
app:contentPadding="20dp"
>
<!--视图 注释c+/-->
<!--cardElevation 海拨 阴影与高度有关
cardCornerRadius 卡片圆角之后
cardUseCompatPadding 针对部分设备不兼容
-->
SwipeRefreshLayout 下拉刷新布局
不需要去下载 V7包包含V4包
android.support.v4.widget.SwipeRefreshLayout
提供一个新布局,支持任意的下拉刷新
<SwipeRefreshLayout>
需要刷新的布局.
</SwipeRefreshLayout>
加联网的权限
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web = (WebView) findViewById(R.id.wv);
refresh = (SwipeRefreshLayout) findViewById(R.id.srl);
initData();
}
private void initData() {
// 不去跳转浏览器加载网页,设置一个禁止调用系统浏览器的对象
WebViewClient webClient = new WebViewClient();
web.setWebViewClient(webClient);
WebSettings settings = web.getSettings();
// 快速加载网页
settings.setJavaScriptEnabled(true);
refresh.setColorSchemeColors(Color.BLUE,Color.CYAN,Color.GRAY,Color.MAGENTA);
refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
web.loadUrl("http://www.baidu.com");
}
});
//WebChromeClient 处理页面加载进度
WebChromeClient client = new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
//下载完成后 下拉刷新隐藏
if (newProgress==100){
refresh.setRefreshing(false);
}
}
};
web.setWebChromeClient(client);
安卓6.0 中央库搜索design
compile 'com.android.support:design:24.2.0'
FloatingActionBar 悬浮按钮。有水波纹效果
由imageview升级过来,有悬浮效果
Snackbar 底部弹出一个工具栏 用法和Toast一样
FloatingActionBar 悬浮按钮 有水波纹效果
compile ‘com.android.support:design:24.2.0’
Snackbar 底部弹出一个工具栏 用法和Toast一样
private FloatingActionButton fab;
private Snackbar snack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fab = (FloatingActionButton) findViewById(R.id.fab);
snack = Snackbar.make(fab, "开启", Snackbar.LENGTH_SHORT);
//点击关闭
snack.setAction("关闭", new View.OnClickListener() {
@Override
public void onClick(View view) {
snack.dismiss();
}
});
}
public void click(View v) {
snack.show();
}
coordinate 协调布局
协调Snackbar 在布局中包裹内容就行 不能把relativelayout放进去
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.a08_floatingactionbutton.MainActivity">
<android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:layout_gravity="bottom|right"
android:onClick="click"
app:backgroundTint="#F00"
app:elevation="8dp"
app:fabSize="normal"
app:rippleColor="@color/colorPrimaryDark" />
</android.support.design.widget.CoordinatorLayout>
logcat看不到时 命令 adb logcat
指示器6.0 提供 TabLayout
compile ‘com.android.support:design:24.2.0’
用法:1.初始化viewpager
2.将viewpager设置给指示器
compile 'com.android.support:design:24.2.0'
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="40dp">
</android.support.design.widget.TabLayout>
MyAdapter pagerAdapter = new MyAdapter(getSupportFragmentManager());
//设置FragmentPagerAdapter
vp.setAdapter(pagerAdapter);
//设置指示器线条的颜色
tab.setSelectedTabIndicatorColor(Color.DKGRAY);
//设置指示器线条的高度
tab.setSelectedTabIndicatorHeight(3);
//设置指示器选中和默认的颜色,
tab.setTabTextColors(Color.BLUE,Color.RED);
//设置指示器的滚动模式
tab.setTabMode(TabLayout.MODE_SCROLLABLE);
//设置指示器依赖viewpager
tab.setupWithViewPager(vp);
FragmentPagerAdapter
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// 返回一个Fragment 新建的类
return new MyFragment();
}
@Override
public int getCount() {
return 15;
}
@Override
public CharSequence getPageTitle(int position) {
return "标题" + position;
}
}
Fragment
public class MyFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ImageView view = new ImageView(container.getContext());
view.setImageResource(R.mipmap.w4);
return view;
}
}
ToolBar的使用
用来取代actionbar
位置灵活 actionbar固定在activity的顶部,toolbar可以在任意位置
设置导航栏图标
设置app的logo
设置标题和子标题
支持一个控件或者多个自定义控件
支持action Menu
布局中设置
<android.support.v7.widget.Toolbar
android:id="@+id/toolb"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.Toolbar>
//找到控件
Toolbar bar = (Toolbar) findViewById(R.id.toolb);
//设置logo
bar.setLogo(R.mipmap.ic_launcher);
//设置背景色
bar.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
//设置主标题
bar.setTitle("野马");
//设置子标题
bar.setSubtitle("在奔跑");
//设置子标题颜色
bar.setSubtitleTextColor(Color.RED);
//设置导航图标
bar.setNavigationIcon(R.mipmap.ic_launcher);
//设置menu菜单
bar.inflateMenu(R.menu.main_menu);
//设置menu菜单的点击事件
bar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.menu1:
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
AppBarLayout Toolbar 显示推出Toolbar的效果
需要下载类库 coordinate 包裹在外面 去掉LinearLayout 布局AppBarLayout 实现滚出屏幕的效果
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll" />
<android.support.design.widget.TabLayout
android:id="@+id/tl"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#aaccdd"
app:layout_behavior="@string/appbar_scrolling_view_behavior"></android.support.v4.view.ViewPager>
</android.support.design.widget.CoordinatorLayout>
AppBarLayout Toolbar 显示推出Toolbar的效果
// 初始化ActionBar
initToolBar();
//初始化ViewPager
initViewPager();
//初始化TableLayout
initTableLayout();
}
private void initToolBar() {
Toolbar bar = (Toolbar) findViewById(R.id.bar);
bar.setLogo(R.mipmap.ic_launcher);
bar.setTitle("酷我");
bar.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
bar.inflateMenu(R.menu.main_menu);
}
private void initTableLayout() {
TabLayout tab = (TabLayout) findViewById(R.id.tl);
tab.setTabTextColors(Color.BLACK,Color.RED);
tab.setSelectedTabIndicatorHeight(3);
tab.setSelectedTabIndicatorColor(Color.BLUE);
tab.setTabMode(TabLayout.MODE_SCROLLABLE);
tab.setupWithViewPager(pager);
}
private void initViewPager() {
pager = (ViewPager) findViewById(R.id.vp);
MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
}
ViewPager的 MyAdapter
public class MyAdapter extends FragmentPagerAdapter{
private final ArrayList<String> list;
public MyAdapter(FragmentManager fm) {
super(fm);
String[] menu = new String[]{"新闻","娱乐","体育","财经","头条","本地","NBA"};
list = new ArrayList<>();
for (int i = 0; i < menu.length; i++) {
list.add(menu[i]);
}
}
@Override
public CharSequence getPageTitle(int position) {
return list.get(position);
}
@Override
public Fragment getItem(int position) {
return new MyFragment();
}
@Override
public int getCount() {
return list.size();
}
}
return一个MyFragment
public class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
RecyclerView recyView = new RecyclerView(container.getContext());
// 创建一个垂直的瀑布流
RecyclerView.LayoutManager layout = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recyView.setLayoutManager(layout);
MyRecycleAdapter adapter = new MyRecycleAdapter();
recyView.setAdapter(adapter);
return recyView;
}
}
MyRecycleAdapter继承RecyclerView
public class MyRecycleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int[] list;
public MyRecycleAdapter() {
list = new int[]{R.mipmap.w1,R.mipmap.w2,R.mipmap.w3,R.mipmap.w4,R.mipmap.w5};
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater from = LayoutInflater.from(parent.getContext());
View inflate = from.inflate(R.layout.item_recyclerview, parent, false);
RecyclerView.ViewHolder holder = new ViewHolder(inflate);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder hold = (ViewHolder) holder;
((ViewHolder) holder).iv.setImageResource(list[position]);
}
@Override
public int getItemCount() {
return list.length;
}
static class ViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.iv)
ImageView iv;
@BindView(R.id.tv)
TextView tv;
ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
注意
在recyclerView 时需要用LayoutInflater
把toolBar推出屏幕
TabLayout + viewpager的用法
<android.support.design.widget.TabLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/white"
app:tabGravity="fill"
app:tabIndicatorColor="@color/chart_title"
app:tabIndicatorHeight="2dp"
app:tabMaxWidth="0dp"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/chart_title"
app:tabTextAppearance="@style/TabLayoutTextStyle"
app:tabTextColor="@color/black_trans_45">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/message_pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
这样设置tab平分屏幕宽度
app:tabGravity="fill"
app:tabMaxWidth="0dp"
app:tabMode="fixed"
在fragment中添加fragment,需要用到getChildFragmentManager()
List<BaseFragmnet> list = new ArrayList<>();
BaseFragmnet listFragment = new MessageListFragment();
BaseFragmnet officeFragment = new MobileOfficeFragment();
list.add(listFragment);
list.add(officeFragment);
NewMessagePagerAdapter pagerAdapter = new NewMessagePagerAdapter(getChildFragmentManager(), list);
messagePager.setAdapter(pagerAdapter);
//使tablayout依赖到viewpagwer
tabLayout.setupWithViewPager(messagePager);
//在adapter中重写getPageTitle方法
public class NewMessagePagerAdapter extends FragmentPagerAdapter {
private String[] titles = new String[]{"消息列表", "移动办公"};
private List<BaseFragmnet> list;
public NewMessagePagerAdapter(FragmentManager fm, List<BaseFragmnet> list) {
super(fm);
this.list = list;
}
public BaseFragmnet getFragment(int pos) {
return list.get(pos);
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return titles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}