仿微信主页fragment
来源:互联网 发布:愿我知一生为何歌词 编辑:程序博客网 时间:2024/06/07 10:17
整理自己写过的代码,这个是一个最常见的fragment应用。现在大部分app的主页都zhem设计。那下面就贴上代码新手写的代码可能不规范的地方有点多,凑合看吧。
这个是我写的简易的样式demo的截图,
下面是代码
主页的布局这个是我后面改过文字的布局,文字和上面截图有点差别
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.fragmentdemo.MainActivity" > <com.example.fragmentdemo.NoScrollViewPager android:id="@+id/vp_container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/rg_tab_menu" android:layout_alignParentTop="true" /> <View android:layout_width="match_parent" android:layout_height="1dip" android:layout_above="@+id/rg_tab_menu" android:background="#cdcdcd" /> <RadioGroup android:id="@+id/rg_tab_menu" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#fff" android:orientation="horizontal" > <RadioButton android:id="@+id/rb_tab_item_main" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:checked="true" android:drawablePadding="2dp" android:gravity="center" android:paddingBottom="3dp" android:paddingTop="8dp" android:text="主页" android:textSize="12sp" tools:text="主页" /> <RadioButton android:id="@+id/rb_tab_item_maid2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="2dp" android:gravity="center" android:paddingBottom="3dp" android:paddingTop="8dp" android:text="主页2" android:textSize="12sp" /> <RadioButton android:id="@+id/rb_tab_item_maid3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="2dp" android:gravity="center" android:paddingBottom="3dp" android:paddingTop="8dp" android:text="主页3" android:textSize="12sp" /> <RadioButton android:id="@+id/rb_tab_item_maid4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="2dp" android:gravity="center" android:paddingBottom="3dp" android:paddingTop="8dp" android:text="主页4" android:textSize="12sp" /> <RadioButton android:id="@+id/rb_tab_item_maid5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="2dp" android:gravity="center" android:paddingBottom="3dp" android:paddingTop="8dp" android:text="主页5" android:textSize="12sp" /> </RadioGroup></RelativeLayout>
这是主要的代码
package com.example.fragmentdemo;import android.support.v4.app.FragmentPagerAdapter;import android.support.v7.app.ActionBarActivity;import android.annotation.SuppressLint;import android.os.Bundle;import android.widget.RadioGroup;@SuppressLint("NewApi")public class MainActivity extends ActionBarActivity {private RadioGroup radiogroup;private NoScrollViewPager viewpager;private FragmentPagerAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);radiogroup = (RadioGroup) findViewById(R.id.rg_tab_menu);viewpager = (NoScrollViewPager) findViewById(R.id.vp_container);adapter = new InnerFragmentPagerAdapter(getSupportFragmentManager());viewpager.setAdapter(adapter);InnerOnCheckedChangeListener listener = new InnerOnCheckedChangeListener();radiogroup.setOnCheckedChangeListener(listener);viewpager.setOffscreenPageLimit(5);}public void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}public void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}public void onPageSelected(int position) {switch (position) {case 0:radiogroup.check(R.id.rb_tab_item_main);break;case 1:radiogroup.check(R.id.rb_tab_item_maid2);break;case 2:radiogroup.check(R.id.rb_tab_item_maid3);break;case 3:radiogroup.check(R.id.rb_tab_item_maid4);break;case 4:radiogroup.check(R.id.rb_tab_item_maid5);break;}}private class InnerOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {switch (checkedId) {case R.id.rb_tab_item_main:viewpager.setCurrentItem(0);break;case R.id.rb_tab_item_maid2:viewpager.setCurrentItem(1);break;case R.id.rb_tab_item_maid3:viewpager.setCurrentItem(2);break;case R.id.rb_tab_item_maid4:viewpager.setCurrentItem(3);break;case R.id.rb_tab_item_maid5:viewpager.setCurrentItem(4);break;}}}}
fragment的我都没怎么添加就是一个空白的创建在那里
package com.example.fragmentdemo;import android.support.v4.app.Fragment;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;public class Fragment2 extends Fragment implements View.OnClickListener{ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.activity_fragment2,null);return view;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stub}}
下面是ViewPager的代码
package com.example.fragmentdemo;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;public class NoScrollViewPager extends ViewPager { private boolean noScroll = false; public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public NoScrollViewPager(Context context) { super(context); } public void setNoScroll(boolean noScroll) { this.noScroll = noScroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent arg0) { if (noScroll) return false; else return super.onTouchEvent(arg0); } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { if (noScroll) return false; else return super.onInterceptTouchEvent(arg0); } @Override public void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); } @Override public void setCurrentItem(int item) { super.setCurrentItem(item); }}还有adapter
package com.example.fragmentdemo;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;public class InnerFragmentPagerAdapter extends FragmentPagerAdapter {public InnerFragmentPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int position) {Fragment fragment = null;switch (position) {case 0:fragment = new Fragment1();break;case 1:fragment = new Fragment2();break;case 2:fragment = new Fragment3();break;case 3:fragment = new Fragment4();break;case 4:fragment = new Fragment5();break;}return fragment;}@Overridepublic int getCount() {return 5;}}
这样就差不多完成了,出来的效果就是上面我截图里面的样式。
还有设置图标和底部文字的代码我也都贴上
选中图片切换
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@mipmap/main"/> <item android:state_checked="true" android:drawable="@mipmap/fangzi"/> <item android:state_selected="true" android:drawable="@mipmap/fangzi"/> <item android:state_pressed="true" android:drawable="@mipmap/fangzi"/></selector>
选中文字变色
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_checked="true" android:color="@color/colorAccent"/><!-- not selected --><item android:state_checked="false" android:color="@color/grey1"/></selector>关闭滑动切换加一句就好了
viewpager.setNoScroll(true);
还有就是点击按钮图片的大小,由于对radiobutton不是熟悉不懂怎么在布局里面自己改大小在网上找了个代码里面改的
//设航按钮的图片大小RadioGroup rg_tab_menu = (RadioGroup) findViewById(R.id.rg_tab_menu);RadioButton rb_tab_item_main = (RadioButton) findViewById(R.id.rb_tab_item_main);RadioButton rb_tab_item_service = (RadioButton) findViewById(R.id.rb_tab_item_main1);RadioButton rb_tab_item_maid = (RadioButton) findViewById(R.id.rb_tab_item_main3);RadioButton rb_tab_item_enjoy = (RadioButton) findViewById(R.id.rb_tab_item_main4);RadioButton rb_tab_item_myself = (RadioButton) findViewById(R.id.rb_tab_item_main5);Drawable drawableWeiHui = getResources().getDrawable(R.drawable.fragmant_main);//第一0是距左右边距离,第二0是距上下边距离,第三69长度,第四宽度drawableWeiHui.setBounds(0, 0, 60, 60);rb_tab_item_main.setCompoundDrawables(null, drawableWeiHui, null, null);Drawable drawableWeiHui2 = getResources().getDrawable(R.drawable.fragmant_serve);drawableWeiHui2.setBounds(0, 0, 60, 60);rb_tab_item_service.setCompoundDrawables(null, drawableWeiHui2, null, null);Drawable drawableWeiHui3 = getResources().getDrawable(R.drawable.fragmant_steward);drawableWeiHui3.setBounds(0, 0, 60, 60);rb_tab_item_maid.setCompoundDrawables(null, drawableWeiHui3, null, null);Drawable drawableWeiHui4 = getResources().getDrawable(R.drawable.fragmant_news);drawableWeiHui4.setBounds(0, 0, 60, 60);rb_tab_item_enjoy.setCompoundDrawables(null, drawableWeiHui4, null, null);Drawable drawableWeiHui5 = getResources().getDrawable(R.drawable.fragmant_amend);drawableWeiHui5.setBounds(0, 0, 60, 60);rb_tab_item_myself.setCompoundDrawables(null, drawableWeiHui5, null, null);
到这里代码就都贴完了附一张完成的效果图
0 0
- 仿微信主页fragment
- 十一、主页fragment
- tab+fragment实现主页
- Fragment写主页
- android学习——用fragment仿微信主页
- ViewPager+Fragment实现主页面
- Android主页动态添加Fragment
- RadioButton+Fragment实现简单主页面布局
- ViewPager+Fragment实现主页面布局
- 主页面RadioButton切换Fragment模板
- Android主页面 多层Fragment嵌套(Fragment+ViewPager)滑动
- activity和fragment实现主页面页面切换
- Android 开发Fragment类似微信主页切换
- 快速开发android应用4-使用viewpager+fragment构建主页
- 仿微信主页布局
- 主页
- 主页
- [安卓]新闻客户端(三) 主页面之slidingMenu & fragment(1)
- C++ 引用 VS 指针 区别
- linux内核中,在/drivers/char目录的Kconfig文件中加入自己编写的新驱动,make menuconfig却不显示的问题
- sd
- SQL/PLSQL:日期函数总结
- BLE开发 Nordic nRF52832(二) BLE简介与虚拟串口传输实现
- 仿微信主页fragment
- CCF201409-4 最优配餐(100分)
- hdu5953 三维空间旋转
- Android SDK Android NDK Android Studio 官方下载地址
- 迷宫最短路径dfs和bfs代码分析
- 坐标系,硬件/谷歌地球卫星 谷歌地图 百度地图 腾讯地图/高德地图 图吧地图
- poj2136
- js获取选择的列表项对应的属性值
- Java递归解压缩