热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

使用ViewPage+Fragment仿微信界面

这篇文章主要为大家详细介绍了使用ViewPage+Fragment仿微信界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了ViewPage+Fragment仿微信界面的具体代码,供大家参考,具体内容如下

实现效果:

左右滑动可切换界面,点击也可以实现

界面与碎片:

主界面:

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
  
  
   
   
   
   
  
 
 

在drawable中创建四个选择器

button_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
  
 

button2_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
  
 

button3_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
  
 

button4_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
  
 

四个碎片:

fragment_weixin.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
 

fragment_contact.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
 

fragment_find.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
 

fragment_mine.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
 

Java代码

主Activity:

package com.example.g160628_android10_viewpagerfragment_zuoye; 
 
import android.content.res.Resources; 
import android.support.annotation.IdRes; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
 
import java.util.ArrayList; 
import java.util.List; 
 
public class MainActivity extends AppCompatActivity { 
 private List fragments=new ArrayList<>(); 
 private ViewPager vp_main_view; 
 private RadioGroup rg_main_group; 
 private List views; 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  //把碎片加入到碎片集合中 
  fragments.add(new WeiXinFragment()); 
  fragments.add(new ContactFragment()); 
  fragments.add(new FindFragment()); 
  fragments.add(new MineFragment()); 
 
  //找到自己的ViewPager 
  vp_main_view = (ViewPager) findViewById(R.id.vp_main_view); 
  vp_main_view.setAdapter(new MyAdapter(getSupportFragmentManager())); 
  //设置当前的碎片为1 
  vp_main_view.setCurrentItem(1); 
 
  //获得单选按钮组 
  rg_main_group = (RadioGroup) findViewById(R.id.rg_main_group); 
  //设置单选按钮组的选择事件 
  rg_main_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
   @Override 
   public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { 
    Resources res=MainActivity.this.getResources(); 
    switch (checkedId) { 
     case R.id.rb_main_bu1: 
      vp_main_view.setCurrentItem(0); 
      break; 
     case R.id.rb_main_bu2: 
      vp_main_view.setCurrentItem(1); 
      break; 
     case R.id.rb_main_bu3: 
      vp_main_view.setCurrentItem(2); 
      break; 
     case R.id.rb_main_bu4: 
      vp_main_view.setCurrentItem(3); 
      break; 
    } 
   } 
  }); 
 
  //获得所有的单选框 
  views=rg_main_group.getTouchables(); 
 
 
  //设置单选框事件 
  vp_main_view.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
   @Override 
   public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
 
   } 
 
   @Override 
   public void onPageSelected(int position) { 
    //设置选中 
    RadioButton button= (RadioButton) views.get(position); 
    button.setChecked(true); 
   } 
 
   @Override 
   public void onPageScrollStateChanged(int state) { 
 
   } 
  }); 
 
 
 } 
 
 //定义属于自己的适配器 
 class MyAdapter extends FragmentPagerAdapter{ 
 
  public MyAdapter(FragmentManager fm) { 
   super(fm); 
  } 
 
  //获得碎片的所有 
  @Override 
  public Fragment getItem(int position) { 
   return fragments.get(position); 
  } 
 
  //返回碎片的长度 
  @Override 
  public int getCount() { 
   return fragments.size(); 
  } 
 } 
 
} 

四个碎片对应的Fragment

WeiXinFragment

package com.example.g160628_android10_viewpagerfragment_zuoye; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by Administrator on 2017/6/15. 
 */ 
 
public class WeiXinFragment extends Fragment { 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //返回对应的fragment_weixin 
  return inflater.inflate(R.layout.fragment_weixin,null); 
 } 
} 

ContactFragment

package com.example.g160628_android10_viewpagerfragment_zuoye; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by Administrator on 2017/6/15. 
 */ 
 
public class ContactFragment extends Fragment { 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //返回对应的fragment_contact 
  return inflater.inflate(R.layout.fragment_contact,null); 
 } 
} 

FindFragment

package com.example.g160628_android10_viewpagerfragment_zuoye; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by Administrator on 2017/6/15. 
 */ 
 
public class FindFragment extends Fragment { 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //返回对应的fragment_find 
  return inflater.inflate(R.layout.fragment_find,null); 
 } 
} 

MineFragment

package com.example.g160628_android10_viewpagerfragment_zuoye; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by Administrator on 2017/6/15. 
 */ 
 
public class MineFragment extends Fragment { 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //返回对应的fragment_mine 
  return inflater.inflate(R.layout.fragment_mine,null); 
 } 
} 

需要的图片

small_weixin   small_contact   small_find    small_mine

剩下的自己去截了,就不一一展示了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Android的四种启动模式
     对Android的启动模式不是很了解,这里记录下简单的理解内容以便日后查看。 Androi的四种启动模式分别为:standard,singleTop,singleTask,sing ... [详细]
  • 一、使用ContentProvider(内容提供者)共享数据ContentProvider在android中的作用是对外共享数据,也就是说 ... [详细]
  • 一、在androidStudio中实现tabs比较简单,新建项目就可以选择tabs模板进行创建,默认实现tabs功能:直接运行项目就可以看到效果:可以说非常简单,但是我们在实际开发 ... [详细]
  • apk简单介绍APK的组成apk安装流程app的启动过程apk打包流程AIDLAIDL介绍为什么要设计这门语言它有哪些语法?默认支持的数据类型包括什么是apk打包流程 ... [详细]
  • 微信小程序官方组件展示之表单组件input源码
    以下将展示微信小程序之表单组件input源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。功能描述:输入框。该组件是原生组件, ... [详细]
  • Adapter相当于C(Controller,控制器),listView相当于V(View,视图)用于显示数据为ListView提供数据的List,数组或数据库相当于MVC模式中的 ... [详细]
  • Android开发之Notification(实现消息弹窗、提示音以及点击事件)
    文章目录通知管理器通知渠道通知发送通知更多效果添加点击事件取消消息通知管理器通知管理器(NotificationManager)类是一个通知管理器&# ... [详细]
  • 一般的网页我的项目能够很容易的实现换肤性能,能够通过js扭转link元素中引入的css主题款式链接。然而微信小程序不能动静扭转wxss文件,所以须要其余的计划来实现。 ... [详细]
  • 先看看效果是不是自己想要的吧item及item内部控件点击事件不懂的可以先点击查看 ... [详细]
  • 我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个protectedvoidonScrollChang ... [详细]
  • 以SOA服务为导向的信息系统构建是通过有计划地构建信息系统时,一种简单而有柔性的方法,就是组件化与服务导向架构。过去的信息系统,是在使用者需要新功能时才开发的,也就是响应不同时 ... [详细]
  • 简单动态字符串redis里面很多地方都用到了字符串,我们知道redis是一个键值对存储的非关系型数据库,那么所有的key都是用字符串存储的,还有字符串类型,这些都是用字符串存储的 ... [详细]
  • ADK安装步骤
    1、下载AndroidSDK,解压后即可(全英文路径)下载地址:http:ools.android-studio.orgindex.phpsdk,下载完成后2、新建一个环境变量,变 ... [详细]
  • 例子如Table表有性别字段,1代表男2代表女、3代表中性、还有没填就代表未说明selectid,decode(sex,'1','男', ... [详细]
  • 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对 ... [详细]
author-avatar
回味的微笑_184
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有