首页 > 代码库 > 手机影音2--软件架构分析
手机影音2--软件架构分析
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="http://www.mamicode.com/@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="http://www.mamicode.com/@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; }
手机影音2--软件架构分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。