微博主页面布局思路

微博主页面布局思路,以及方法的提取思路:

public class MainActivity extends FragmentActivity implements
OnCheckedChangeListener, OnClickListener {

private RadioGroup rg_tab;
private ImageView iv_add;
private FragmentController controller;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

controller = FragmentController.getInstance(this, R.id.fl_content);
controller.showFragment(0);

initView();
}

private void initView() {
rg_tab = (RadioGroup) findViewById(R.id.rg_tab);
iv_add = (ImageView) findViewById(R.id.iv_add);

rg_tab.setOnCheckedChangeListener(this);
iv_add.setOnClickListener(this);
}


@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_home:
controller.showFragment(0);
break;
case R.id.rb_meassage:
controller.showFragment(1);
break;
case R.id.rb_search:
controller.showFragment(2);
break;
case R.id.rb_user:
controller.showFragment(3);
break;
default:
break;
}
}


@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_add:
ToastUtils.showToast(this, "add", Toast.LENGTH_SHORT);
break;


default:
break;
}
}
}


activity_main的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/bg_gray"
    android:orientation="vertical" >


    <FrameLayout
        android:id="@+id/fl_content"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />


    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="@color/divider_gray" />


    <RadioGroup
        android:id="@+id/rg_tab"
        android:layout_width="fill_parent"
        android:layout_height="48dp"
        android:layout_gravity="bottom"
        android:background="#fafafa"
        android:gravity="center_vertical"
        android:orientation="horizontal" >


        <RadioButton
            android:id="@+id/rb_home"
            style="@style/RadioButtonBottomTab"
            android:checked="true"
            android:drawableTop="@drawable/icon_home"
            android:text="首页" />


        <RadioButton
            android:id="@+id/rb_meassage"
            style="@style/RadioButtonBottomTab"
            android:drawableTop="@drawable/icon_meassage"
            android:text="消息" />


        <ImageView
            android:id="@+id/iv_add"
            android:layout_width="56dp"
            android:layout_height="40dp"
            android:padding="8dp"
            android:src="@drawable/icon_add"
            android:background="@drawable/correct_oran_sel" />


        <RadioButton
            android:id="@+id/rb_search"
            style="@style/RadioButtonBottomTab"
            android:drawableTop="@drawable/icon_square"
            android:text="发现" />


        <RadioButton
            android:drawableTop="@drawable/icon_selfinfo"
            android:id="@+id/rb_user"
            style="@style/RadioButtonBottomTab"
            android:text="我" />
    </RadioGroup>


</LinearLayout>


<style name="RadioButtonBottomTab">
<item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:button">@null</item>
<item name="android:textColor">@drawable/txtcolor_gray2oran_sel</item>
<item name="android:gravity">center</item>
<item name="android:background">@color/white</item>
    </style>


public class FragmentController {


private int containerId;
private FragmentManager fm;
private ArrayList<Fragment> fragments;

private static FragmentController controller;


public static FragmentController getInstance(FragmentActivity activity, int containerId) {
if (controller == null) {
controller = new FragmentController(activity, containerId);
}
return controller;
}


private FragmentController(FragmentActivity activity, int containerId) {
this.containerId = containerId;
fm = activity.getSupportFragmentManager();
initFragment();
}


private void initFragment() {
fragments = new ArrayList<Fragment>();
fragments.add(new HomeFragment());
fragments.add(new MessageFragment());
fragments.add(new SearchFragment());
fragments.add(new UserFragment());

FragmentTransaction ft = fm.beginTransaction();
for(Fragment fragment : fragments) {
ft.add(containerId, fragment);
}
ft.commit();
}


public void showFragment(int position) {
hideFragments();
Fragment fragment = fragments.get(position);
FragmentTransaction ft = fm.beginTransaction();
ft.show(fragment);
ft.commit();
}

public void hideFragments() {
FragmentTransaction ft = fm.beginTransaction();
for(Fragment fragment : fragments) {
if(fragment != null) {
ft.hide(fragment);
}
}
ft.commit();
}

public Fragment getFragment(int position) {
return fragments.get(position);
}
}



public class HomeFragment extends BaseFragment {


private View view;
private TextView titlebar_tv;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = View.inflate(activity, R.layout.frag_home, null);

new TitleBuilder(view)
.setTitleText("首页")
.setLeftText("LEFT")
.setLeftOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ToastUtils.showToast(activity, "left onclick", Toast.LENGTH_SHORT);
}
});

return view;
}

}

public class MessageFragment extends BaseFragment {


private View view;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = View.inflate(activity, R.layout.frag_message, null);

new TitleBuilder(view)
.setTitleText("Message")
.setRightImage(R.drawable.ic_launcher)
.setRightOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ToastUtils.showToast(activity, "right click~", Toast.LENGTH_SHORT);
}
});

return view;
}


}


子fragment的布局:

<?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:background="@color/bg_gray"
    android:orientation="vertical" >


    <include layout="@layout/include_titlebar"/>
    
    <TextView 
        style="@style/TextViewSubhead"
        android:text="首页"
        />


</LinearLayout>


标题栏封装类处理:

public class TitleBuilder {


private View viewTitle;
private TextView tvTitle;
private ImageView ivLeft;
private ImageView ivRight;
private TextView tvLeft;
private TextView tvRight;


public TitleBuilder(Activity context) {
viewTitle = context.findViewById(R.id.rl_titlebar);
tvTitle = (TextView) viewTitle.findViewById(R.id.titlebar_tv);
ivLeft = (ImageView) viewTitle.findViewById(R.id.titlebar_iv_left);
ivRight = (ImageView) viewTitle.findViewById(R.id.titlebar_iv_right);
tvLeft = (TextView) viewTitle.findViewById(R.id.titlebar_tv_left);
tvRight = (TextView) viewTitle.findViewById(R.id.titlebar_tv_right);
}

public TitleBuilder(View context) {
viewTitle = context.findViewById(R.id.rl_titlebar);
tvTitle = (TextView) viewTitle.findViewById(R.id.titlebar_tv);
ivLeft = (ImageView) viewTitle.findViewById(R.id.titlebar_iv_left);
ivRight = (ImageView) viewTitle.findViewById(R.id.titlebar_iv_right);
tvLeft = (TextView) viewTitle.findViewById(R.id.titlebar_tv_left);
tvRight = (TextView) viewTitle.findViewById(R.id.titlebar_tv_right);
}


// title


public TitleBuilder setTitleBgRes(int resid) {
viewTitle.setBackgroundResource(resid);
return this;
}


public TitleBuilder setTitleText(String text) {
tvTitle.setVisibility(TextUtils.isEmpty(text) ? View.GONE
: View.VISIBLE);
tvTitle.setText(text);
return this;
}


// left


public TitleBuilder setLeftImage(int resId) {
ivLeft.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);
ivLeft.setImageResource(resId);
return this;
}


public TitleBuilder setLeftText(String text) {
tvLeft.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);
tvLeft.setText(text);
return this;
}


public TitleBuilder setLeftOnClickListener(OnClickListener listener) {
if (ivLeft.getVisibility() == View.VISIBLE) {
ivLeft.setOnClickListener(listener);
} else if (tvLeft.getVisibility() == View.VISIBLE) {
tvLeft.setOnClickListener(listener);
}
return this;
}


// right


public TitleBuilder setRightImage(int resId) {
ivRight.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);
ivRight.setImageResource(resId);
return this;
}


public TitleBuilder setRightText(String text) {
tvRight.setVisibility(TextUtils.isEmpty(text) ? View.GONE
: View.VISIBLE);
tvRight.setText(text);
return this;
}


public TitleBuilder setRightOnClickListener(OnClickListener listener) {
if (ivRight.getVisibility() == View.VISIBLE) {
ivRight.setOnClickListener(listener);
} else if (tvRight.getVisibility() == View.VISIBLE) {
tvRight.setOnClickListener(listener);
}
return this;
}


public View build() {
return viewTitle;
}


}







<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Blog Design</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <div id="header"> <span class="logo">blog about web design</span> <div href="sc.chinaz.com">best free templates</a></h1></div> <ul id="menu"> <li><a href="index.html"><img src="images/but1.gif" alt="" width="64" height="42" /></a></li> <li><a href="index2.html"><img src="images/but2.gif" alt="" width="108" height="42" /></a></li> <li><a href="index2.html"><img src="images/but3.gif" alt="" width="93" height="42" /></a></li> <li><a href="index2.html"><img src="images/but4.gif" alt="" width="101" height="42" /></a></li> <li><a href="index2.html"><img src="images/but5.gif" alt="" width="86" height="42" /></a></li> <li><a href="index2.html"><img src="images/but6.gif" alt="" width="102" height="42" /></a></li> </ul> <img src="images/spacer.gif" alt="setalpm" width="120" height="120" border="0" usemap="#Map" class="rss" /> <map name="Map"> <area shape="circle" coords="60,60,63" href="sc.chinaz.com"> </map> </div> <div id="content"> <div id="posts"> <div class="post"> <h2>Retro Photos</h2> <div><span class="date">Mar 18th</span><span class="categories">in: Photos, Retro</span></div> <div class="description"> <p><img src="images/pic1.jpg" alt="" width="239" height="232" /> Lorem ipsum dolor sit amet, consectetuer adipi scing elit.Mauris urna urna, varius et, interdum a, tincidunt quis, libero. Aenean sit amturpis. Maecenas hendrerit, massa ac laoreet iaculipede mnisl ullamcorpermassa, cosectetuer feipsum eget pede. Proin nunc. Donec nonummy, tellus er sodales enim, in tincidunmauris in odio. Massa ac laoreet iaculipede nisl ullamcorpermassa, ac consectetuer feipsum eget pede. Proin nunc. Donec massa. Nulla pulvinar, nisl ac convallis nonummy, tellus eros sodales enim, in tincidunt mauris in odio. massa ac laoreet iaculipede niorpermassa,consectetuer feipsum eget pede. Proin nunc. Donec massa. Nulla pulvinar, nisl ac convallis nonummy, tellus eros sodales enim, in tincidunt mauris in odio. Lorem ipsum dolor sit amet, consectetuer adipi scing elit.Mauris urna urna, varius et, interdum a, tincidunt quis, libero. Aenean sit amturpis. </p> </div> <p class="comments">Comments - <a href="sc.chinaz.com">17</a> <span>|</span> <a href="index2.html">Continue Reading</a></p> </div> <div class="post"> <h2>Original Wordpress Themes</h2> <div><span class="date">Mar 12th</span><span class="categories">in: Design, Themes</span></div> <div class="description"> <p>Lorem ipsum dolor sit amet, consectetuer adipi scing elit.Mauris urna urna, varius et, interdum a, tincidunt quis, libero. Aenean sit amturpis. Maecenas hendrerit, massa ac laoreet iaculipede mnisl ullamcorpermassa, cosectetuer feipsum eget pede. Proin nunc. Donec nonummy, tellus er sodales enim, in tincidunmauris in odio. Massa ac laoreet iaculipede nisl ullamcorpermassa, ac consectetuer feipsum eget pede. Proin nunc. Donec massa. Nulla pulvinar, nisl ac convallis nonummy, tellus eros sodales enim, in tincidunt mauris in odio. massa ac laoreet iaculipede niorpermassa,consectetuer feipsum eget pede. Proin nunc. Donec massa. Nulla pulvinar, nisl ac convallis nonummy, tellus eros sodales enim, in tincidunt mauris in odio. Lorem ipsum dolor sit amet, consectetuer adipi scing elit.Mauris urna urna, varius et, interdum a, tincidunt quis, libero. Aenean sit amturpis. </p> </div> <p class="comments">Comments - <a href="sc.chinaz.com">17</a> <span>|</span> <a href="index2.html">Continue Reading</a></p> </div> </div> <div id="sidebar"> <div id="search"> <input type="text" value="Search"> <a href="sc.chinaz.com"><img src="images/go.gif" alt="" width="26" height="26" /></a> </div> <div class="list"> <img src="images/title1.gif" alt="" width="186" height="36" /> <ul> <li><a href="sc.chinaz.com">animation</a></li> <li><a href="sc.chinaz.com">magazines</a></li> <li><a href="sc.chinaz.com">architecture</a></li> <li><a href="sc.chinaz.com">news</a></li> <li><a href="sc.chinaz.com">art</a></li> <li><a href="sc.chinaz.com">photography</a></li> <li><a href="sc.chinaz.com">blogs</a></li> <li><a href="sc.chinaz.com">product design</a></li> <li><a href="sc.chinaz.com">books</a></li> <li><a href="sc.chinaz.com">stuff</a></li> <li><a href="sc.chinaz.com">graphic design</a></li> <li><a href="sc.chinaz.com">web design</a></li> <li><a href="sc.chinaz.com">illustration</a></li> </ul> <img src="images/title2.gif" alt="" width="180" height="34" /> <ul> <li><a href="sc.chinaz.com">January</a></li> <li><a href="sc.chinaz.com">July</a></li> <li><a href="sc.chinaz.com">February</a></li> <li><a href="sc.chinaz.com">August</a></li> <li><a href="sc.chinaz.com">March</a></li> <li><a href="sc.chinaz.com">September</a></li> <li><a href="sc.chinaz.com">April</a></li> <li><a href="sc.chinaz.com">October</a></li> <li><a href="sc.chinaz.com">May</a></li> <li><a href="sc.chinaz.com">November</a></li> <li><a href="sc.chinaz.com">June</a></li> <li><a href="sc.chinaz.com">December</a></li> </ul> </div> </div> </div> <div id="footer"> <p>Copyright ©. All rights reserved. Design from <a href="sc.chinaz.com" target="_blank" title="Free Templates">站长素材</a></p> </div> <div </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值