1.标题栏
<?xml version="1.0" encoding="utf-8"?> <com.atguigu.mobileplayer2.view.TitleBar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="55dp" android:background="#ff3097fd" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:src="@drawable/ic_topbanner_logo" /> <TextView android:id="@+id/tv_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_weight="1" android:background="@drawable/tv_search_bg_selector" android:clickable="true" android:drawableLeft="@drawable/tv_search_drawable_selector" android:drawablePadding="3dp" android:text="全网搜索" android:textColor="@drawable/tv_search_textcolor_selector" android:textSize="14sp" /> <RelativeLayout android:id="@+id/rl_game" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp"> <TextView android:id="@+id/tv_game" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_topbanner_game" /> <ImageView android:layout_width="6dp" android:layout_height="6dp" android:layout_alignRight="@id/tv_game" android:background="@drawable/dot" /> </RelativeLayout> <ImageView android:id="@+id/iv_record" android:layout_marginLeft="5dp" android:layout_marginRight="8dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_topbanner_record" /> </com.atguigu.mobileplayer2.view.TitleBar>
2.自定义标题栏
public class TitleBar extends LinearLayout implements View.OnClickListener { private View tv_search; private View rl_game; private View iv_record; private Context context; /** * 在代码中实例化该类的时候使用这个方法 * @param context */ public TitleBar(Context context) { this(context,null); } /** * 当在布局文件使用该类的时候,Android系统通过这个构造方法实例化该类 * @param context * @param attrs */ public TitleBar(Context context, AttributeSet attrs) { this(context, attrs,0); } /** * 当需要设置样式的时候,可以使用该方法 * @param context * @param attrs * @param defStyleAttr */ public TitleBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; } /** * 当布局文件加载完成的时候回调这个方法 */ @Override protected void onFinishInflate() { super.onFinishInflate(); //得到孩子的实例 tv_search = getChildAt(1); rl_game = getChildAt(2); iv_record = getChildAt(3); //设置点击事件 tv_search.setOnClickListener(this); rl_game.setOnClickListener(this); iv_record.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv_search://搜索 // Toast.makeText(context, "搜索", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(context,SearchActivity.class); context.startActivity(intent); break; case R.id.rl_game://游戏 Toast.makeText(context, "游戏", Toast.LENGTH_SHORT).show(); break; case R.id.iv_record://播放历史 Toast.makeText(context, "播放历史", Toast.LENGTH_SHORT).show(); break; } } }
3.屏蔽各个页面重复初始化数据
1.在BasePager中添加标识字段
public abstract class BasePager { /** * 判断是否初始化过数据 */ public boolean isInit; .... }
2.在主页面中屏蔽
/** * 得到具体的某个孩子的实例视图 * @return */ private BasePager getBasePager() { BasePager basePager = basePagers.get(position); if(basePager != null&&!basePager.isInit){ basePager.initData(); basePager.isInit = true; } return basePager; }
时间: 2024-10-12 20:09:08