android由于受限于屏幕的尺寸,我们尽可能的想要在界面上显示更多的东西。先来两张图
一个是360的,一个是汽车之家。今天这篇文章就来搭建这个框架,到时候只需要往里面填充内容就行了。搭建完了之后效果图。
当然了,不是专业美工,画面比较丑,哈哈。滑动条啊,图片呀自己加就行了,现在只负责打框架。步奏呀乱七八糟的就不说了,直接上代码。
MainActivity:
package com.sunnix.main; import java.util.ArrayList; import java.util.List; import com.sunnix.fragment.HomePageFragment; import com.sunnix.fragment.MinePageFragment; import com.sunnix.fragment.RecommendPageFragment; import com.sunnix.fragment.SearchPageFragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.FrameLayout; import android.widget.TextView; public class MainActivity extends FragmentActivity { private FrameLayout mMainFrameLayout; private TextView mHomePageTextView; private TextView mRecommendPageTextView; private TextView mSearchPageTextView; private TextView mMinePageTextView; private List<Fragment> mFragmentList=new ArrayList<Fragment>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFragment(); initView(); } public void initFragment(){ HomePageFragment homePageFragment=new HomePageFragment(); RecommendPageFragment recommendPageFragment=new RecommendPageFragment(); SearchPageFragment searchPageFragment=new SearchPageFragment(); MinePageFragment minePageFragment=new MinePageFragment(); mFragmentList.add(homePageFragment); mFragmentList.add(recommendPageFragment); mFragmentList.add(searchPageFragment); mFragmentList.add(minePageFragment); FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction transaction=fragmentManager.beginTransaction(); transaction.add(R.id.mainFrameLayoutId, homePageFragment); transaction.commit(); } public void initView(){ mMainFrameLayout=(FrameLayout)findViewById(R.id.mainFrameLayoutId); mHomePageTextView=(TextView)findViewById(R.id.homePageTextViewId); mRecommendPageTextView=(TextView)findViewById(R.id.recommendPageTextViewId); mSearchPageTextView=(TextView)findViewById(R.id.searchPageTextViewId); mMinePageTextView=(TextView)findViewById(R.id.minePageTextViewId); mHomePageTextView.setOnClickListener(new MyTextViewClickListener(0)); mRecommendPageTextView.setOnClickListener(new MyTextViewClickListener(1)); mSearchPageTextView.setOnClickListener(new MyTextViewClickListener(2)); mMinePageTextView.setOnClickListener(new MyTextViewClickListener(3)); } class MyTextViewClickListener implements OnClickListener{ int location; public MyTextViewClickListener(int location){ this.location=location; } @Override public void onClick(View arg0) { FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction transaction=fragmentManager.beginTransaction(); transaction.replace(R.id.mainFrameLayoutId, mFragmentList.get(location)); transaction.commit(); } } }
MainActivity对应的Layout:
<LinearLayout 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:orientation="vertical" android:background="#ffffff"> <FrameLayout android:id="@+id/mainFrameLayoutId" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp" android:background="#000000"> <TextView android:id="@+id/homePageTextViewId" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textColor="#ffffff" android:text="首页"/> <TextView android:id="@+id/recommendPageTextViewId" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textColor="#ffffff" android:text="推荐"/> <TextView android:id="@+id/searchPageTextViewId" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textColor="#ffffff" android:text="发现"/> <TextView android:id="@+id/minePageTextViewId" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textColor="#ffffff" android:text="我的"/> </LinearLayout> </LinearLayout>
然后创建四个Fragment,当用户点击底部的文字时,只需要吧相应的Fragment装入FrameLayout即可,第一个是首页,首页中包含了一个ViewPager,其他的比如:推荐、发现、我的,都是空白的,为了以示区别,不同的页写上相应页的名称。
首页:
package com.sunnix.fragment; import java.util.ArrayList; import java.util.List; import com.sunnix.main.R; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class HomePageFragment extends Fragment{ private ViewPager mHomePageViewPager; private List<View> mViewPagerList=new ArrayList<View>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v=inflater.inflate(R.layout.home_page_fragment, null); mHomePageViewPager=(ViewPager)v.findViewById(R.id.homePageViewPager); initViewPager(inflater); return v; } public void initViewPager(LayoutInflater inflater){ View gameView=inflater.inflate(R.layout.home_game_view, null); View softView=inflater.inflate(R.layout.home_soft_view, null); View rankView=inflater.inflate(R.layout.home_rank_view, null); View mustView=inflater.inflate(R.layout.home_must_view, null); mViewPagerList.clear(); mViewPagerList.add(gameView); mViewPagerList.add(softView); mViewPagerList.add(rankView); mViewPagerList.add(mustView); mHomePageViewPager.setCurrentItem(0); mHomePageViewPager.setAdapter(new MyPageAdapter(mViewPagerList)); mHomePageViewPager.setOnPageChangeListener(new MyPageListener()); } class MyPageAdapter extends PagerAdapter{ private List<View> list; public MyPageAdapter(List<View> list){ this.list=list; } @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(list.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(list.get(position)); return list.get(position); } } class MyPageListener implements OnPageChangeListener{ @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int arg0) { } } }对应的Layout文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp" android:background="#66ffff"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="游戏"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="软件"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="排行"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="必备"/> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/homePageViewPager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout>推荐、发现、我的,这三个页都是空白的,就发一个吧:
import com.sunnix.main.R; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class MinePageFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v=inflater.inflate(R.layout.mine_page_fragment, null); return v; } }
对应的Layout文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="minePage" android:textSize="15pt"/> </LinearLayout>到这里呢,基本就结束了,大体思路就是树状结构,一层套一层。大概画了一个示意图
代码有的地方写不是很精练,也不是很健壮,List的非空判断等等,字数有限,在实际中自己加上。写的不好的地方欢迎指出。有需要源码的留下邮箱。