手机影音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="@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-12-29 07:16:23

手机影音2--软件架构分析的相关文章

黑马2018年最新kotlin项目实战视频 (手机影音、即时通讯、黑马外卖、坦克大战等)

├─1.kotlin简介和学习方法│ 01_kotlin课程简介_01.mp4│ 02_kotlin学习方法_01.mp4│ 03_kotlin选好教练车_01.mp4│ 03_kotlin选好教练车_02.mp4│ 04_kotlin你好世界_01.mp4│ 05_kotlin变量与输出_01.mp4│ 05_kotlin变量与输出_02.mp4│ ├─10.类,对象和接口(三)│ 38_kotlin面向对象-抽象类和接口_01.mp4│ 38_kotlin面向对象-抽象类和接口_02.mp4

使用Pig对手机上网日志进行分析

在安装成功Pig的基础上.本文将使用Pig对手机上网日志进行分析,详细过程例如以下: 写在前面: 手机上网日志文件phone_log.txt.文件内容 及 字段说明部分截图例如以下 需求分析 显示每一个手机号的上网流量情况. 依次完毕下面步骤: 1.将Linux本地文件phone_log.txt上传到HDFS 运行命令dump C; 查看经过以上步骤处理后的结果 查看经过以上步骤处理后的结果 OK.齐活!

wpa_supplicant软件架构分析

wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是wpa

MT 6572 平台手机系统源码分析

1.Android源码中Package包下有: 2.最主要使用的是Package/app 下的包,这里面包含一些系统应用,比如: 3.编译app模块下的应用的方法如下: 编译方法: User版本: ./mk -o=TARGET_BUILD_VARIANT=user ${projectname} mm packages/apps/Settings/ Eng版本: ./mk ${projectname} mm packages/apps/Settings/ 4.在package/app 下内置第三方

Android 手机影音 学习过程记录(六)

前一篇已经将音乐播放及切换的相关逻辑弄好了,今天主要理一下剩余的部分,包括: 1. 自定义通知栏的布局及逻辑处理 2. 滚动歌词的绘制 3. 歌词解析 效果图 通知栏 自定义布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layou

手机行业竞争格局分析 -- 基于中关村在线(1)

爬取中关村手机网站,获取1716笔数据. 型号占比 下图是每一个品牌型号个数的占比图.(注意:次数是型号个数,并不代表销量.) 小结:从饼图可以看出,出厂型号最多的Top10的手机品牌为:三星手机, 小米手机, 华为手机, 荣耀手机, 酷派手机, LG手机, vivo手机, 魅族手机, 索尼移动手机, 中兴手机. 手机型号个数维度分析 在1716笔数据中,其中372笔没有包含处理器信息,如下图所示. 使用处理器最多的Top5是:高通,联发科/MTK,华为海思,三星,展讯. 不同厂家使用处理器的选

手机影音第十七天,实现歌词同步

代码已托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 效果图: 有一个小的遗憾,就是该MP3文件和歌词文件要在同一路径下,才能读取到歌词,否则读取不到录音文件. 将录音文件发到这里,是.lrc格式的文件,其实TXT文件的也行:如果在手机上显示是乱码的话,就改一下文件的编码为Unicode,再尝试下. [ti:北京北京] [00:00.05]献给我最爱的老婆 --常长丽 [00:02.17]歌曲名:北京北京 [00

使用Fiddler对手机进行抓包分析

场景:一个html页面,安卓app使用webview来显示,但是显示效果不是预期的.于是自己写了一个基本webview的demo,使用webview的loadurl方法请求这个html页面.可以正确显示,但是客户端组抓包说我请求的地址不一样,让我自己抓包分析. 分析:app在请求这个页面时请求附加了字符串及cookie等信息. 解决方法:使用Fiddler抓包,抓包过程网上有很多教程,注意一点有的手机可能设置代理时不能设置全局代理,可以使用ProxyDroid来设置全局代理. Fiddler抓包

手机影音第四天,顶部标题栏的布局实现与本地视频的搜索

前面讲了下面的菜单布局与中间的fragmentLayout的布局与实现,今天就写了顶部title的布局以及去搜索本地sd卡里的视频. 一.顶部布局实现 效果图如下: 1.分析下: a.这个顶部布局是个LinearLayout布局 b.左侧这个321影音是个ImageView,然后这个搜索框是一个TextView,右侧的游戏图标是个相对布局,里面是一个textview和一个Image构成的点,最右侧的那个记录是一个Imageview c.最主要的是中间的这个搜索框,为什么是一个textview呢,