为了账号安全,请及时绑定邮箱和手机立即绑定

Android攻城狮的第二门课(第1季)

难度入门
时长 5小时 0分
学习人数
综合评分9.43
320人评价 查看评价
9.8 内容实用
9.4 简洁易懂
9.1 逻辑清晰
  • ViewPager 使用fragment作为数据源: 注意凡是涉及到FragmentPagerAdapter的文件都应该导入android.support.v4.app.Fragment包,兼容性更好 1.创建多个Fragment类继承Fragment加载相应的布局文件,注意导入android.support.v4.app.Fragment; 2.在ViewPager容器创建集合List<Fragment>fragList=new ArrayList<Fragment>();并添加到fragList当中 3.配置适配器继承FragmentPagerAdapter 4.适配器类的构造函数需要手动增加参数,FragmentPagerAdapter无法实现自动实例化和销毁的Fragment 5.实例化适配器:主函数应该继承FragmentActivity,兼容性更好,第一个构造函数传递的参数为getSupportFragmentManager() 6.加载适配器, 7.运行出现问题,注意看适配器中的方法是否重写了 8.FragmentStatePagerAdapter具有自动销毁与实例化页卡的功能
    查看全部
  • Fragment 生命周期: 1.onAttach():当Fragment被添加到Activity时候会回调这个方法,并且只调用一次 2.onCreat():创建Fragment时被回调,并且只调用一次 3.onCreatView():每次创建都会绘制Fragment的View组件时调用该方法 4.onActivityCreated():当Fragment所在的Activity启动完成后调用这个方法 5.onStart():恢复Fragment时会被回调,调用onStart()方法后面一定会调用onResume()方法 6.onPause():暂停Fragment 7.onStop():停止Fragment
    查看全部
  • ProgressBar的关键属性 android:max="100" 最大显示进度 android:progress="50" 第一显示进度 android:secondaryProgress="80" 第二显示进度 android:indeterminate="true" 设置是否精确显示(true表示不精确显示进度,false表示精确显示进度)
    查看全部
  • zxcSD i欧风人情味而后已枯萎
    查看全部
  • Fragment生命周期: Created【onAttach()->onCreate()->onCreateView()->onActivityCreated()】 onAttach()方法:当Fragment被添加到Activity时会回调这个方法且只调用一次 onCreate()方法:当创建Fragment时会回调这个方法且只调用一次 onCreateView()方法:给Activity绑定一个布局;每次创建都会绘制Fragment的View组件时回调该方法 onActivityCreated()方法:当Fragment所在的Activity启动完成后调用 ______________________________________ Started【onStart()】启动Fragment ______________________________________ Resumed【onResume()】恢复Fragment时会被回调,调用onStart()方法后一定会调用onResume()方法 ______________________________________ Paused【onPause()】暂停Fragment ______________________________________ Stopped【onStop()】停止Fragment ______________________________________ Destroyed【onDestroyView()->onDestroy()->onDetach()】 onDestroyView()方法:销毁Fragment所包含的View组件时回调 onDestroy()方法:销毁Fragment时会被回调 onDetach()方法:Fragment从Activity中删除时会被回调,且只调用一次
    查看全部
  • /** * Fragment是一种可以嵌入在activity当中的一个模块化和可重复利用的组件, * 它可以定义自己的布局和监听事件,以及通过使用它自己的生命周期回调方法 * 定义的它自己的行为 * * 一,Fragment知识概要 * 1.Fragment可以作为avtivity界面的一部分组成出现 * 2.可以在一个activity中同时出现多个Fragment,并且一个Fragment也可以在多个activity中使用 * 3.activity运行过程中,可以添加,移除或替换Fragment * 4.Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主activity的生命周期的影响 * * 【注意】 Fragment第一次绘制它的用户界面的时候,系统会调用onCreateView(),为了绘制 *Fragment中定义的UI(UI定义在一个xml布局文件中),此方法必须返回一个View,如果不显示就返回null即可 * * 二,加载方式 * * 1.静态加载 * (1).在activity的布局文件中声明一个Fragment,需要注意到的是<fragment/>中的android:name 属性指定了一个实例化的Fragment类 * (2).标识Fragment的方法: *<1> android:id 提供一个唯一id *<2> android:tag 提供一个唯一的字符串 * * 2.动态加载 * (1).在java代码中将Fragment添加到一个Activity layout中 * (2).核心方法: add(); 添加一个Fragment(指定一个要添加的fragment和插入的View) * 与此类似的还有remove(),replace()。。。 * * */
    查看全部
  • 一、作用 1、为某个页面申请一个安全权限,防止其他程序对其进行访问 二、方法 1、在需要申请页面的配置文件中,在全局配置<permission android:name="xxx,xxx,xxx" android:protectionLevel="normal/dangerous等" />,然后在<activity>标签里进行使用<activity android:permission="xxx,xxx,xxx" ...> 2、若其他程序要访问被自定义权限保护的页面,需要在自己的配置文件里申请权限,使用<uses-permission android:name="xxx,xxx,xxx"/> 才能访问! 补充:通过名称访问其他工程下的页面 · 通过Intent intent = new Intent(); intent.setClassName("yyy.yyy.yyy","yyy.yyy.yyy访问Activity名称"); startActivity(intent); 可以访问不同包下的、不同工程下的活动 · 此处的名称是<activity android:name="yyy.yyy.yyy">下定义的
    查看全部
    2 采集 收起 来源:自定义权限

    2018-03-22

  • 小知识点:(快捷键) 鼠标定位到android:text="@string/textview"之后,按住Ctrl+1组合键来自定义一个id来引用在strings.xml文件中的对应名称的字符串内容!
    查看全部
  • 三种状态
    查看全部
  • 隐藏ScrollView: 1、标签属性:android:scrollbars = "none" 2、代码设置: setHorizontalScrollBarEnable(false);隐藏横向ScrollView setVerticalScrollBarEnable(false);隐藏纵向ScrollView
    查看全部
  • 组件篇 <application android:icon="@drawable/icon" android:theme="@style/my_theme">[...application nodes...] </application> 属性可以设置: 图标:android:icon 标题:android:label 主题样式:android:theme
    查看全部
  • AndroidManifest.xml配置文件介绍: 本质:AndroidManifest.xml是整个应用的主配置清单文件。 包含:该应用的报名、版本号、组件、权限等信息 作用:记录该应用的相关的配置信息。 AndroidManifest.xml常用标签解读 1.全局篇(包名、版本信息) 2.组件篇(四大组件) 3.权限篇(申请权限和定义权限)
    查看全部
  • MainActivity.java

    public class MainActivity extends Activity {
        private ListView listView;
        private ArrayAdapter<String>arr_adapter;
        private SimpleAdapter simp_adapter;
        private List<Map<String, Object>>dataList;
        @Override
        protected void onCreate(Bundle saveInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            listView = (ListView)findViewById(R.id.listView);
            //1、新建一个数据适配器
            //ArrayAdapter(上下文,当前ListView加载的每一个列表项所对应的布局文件,数据源)
            //SimpleAdapter()
            /**
            * context: 上下文
            * data: 数据源 (List<? extends Map<String, ?>> data) 
            *一个Map所组成的List集合
            * 每一个Map都会去对应ListView列表中的一行
            *每一个Map(键-值对)中的键必须包含所有在from中所指定的键
            *
            *resource: 列表项的布局文件ID
            *from: Map中的键名
            *to: 绑定数据视图中的ID,与from成对应关系
            */
            //2、适配器加载数据源
            String[] arr_data = {"imooc1", "imooc2" , "imooc3", "imooc4"};
            dataList = new ArrayList<Map<String, Object>>();
            arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item1, arr_data);
            //new SimpleAdapter(context, data, resource, from, to)
            simp_adapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"pic", "text"}, new int[]{R.id.pic, R.id.text});
            //3、视图(ListView)加载适配器
            //listView.setAdapter(arr_adapter);
            listView.setAdapter(simp_adapter);
        }
        private List<Map<String, Object>> getData() {
            for(int i=0; i<20; i++) {
                Map<String, Object>map = new HashMap<String, Object>();
                map.put("pic", R.drawable.img1);
                map.put("text", "慕课网" + i);
                dataList.add(map);
            }
            return dataList;
        }
    }

    item.xml

    <LinearLayout 
        android: layout_width = "match_parent"
        android: layout_height = "match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android: orientation = "horizontal" >
        <ImageView
            android: id = "@+id/pic"
            android: layout_marginLeft = "15dp"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: src = "@drawable/img1" />
        <TextView
            android: id = "@+id/text"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: textSize = "20sp"
            android: textColor = "#000"
            android: text = "demo" />
    <LinearLayout/>


    查看全部
    2 采集 收起 来源:使用SimpleAdapter

    2018-05-14

  • 一、作用 1、为某个页面申请一个安全权限,防止其他程序对其进行访问 二、方法 1、在需要申请页面的配置文件中,在全局配置<permission android:name="xxx,xxx,xxx" android:protectionLevel="normal/dangerous等" />,然后在<activity>标签里进行使用<activity android:permission="xxx,xxx,xxx" ...> 2、若其他程序要访问被自定义权限保护的页面,需要在自己的配置文件里申请权限,使用<uses-permission android:name="xxx,xxx,xxx"/> 才能访问!
    查看全部
    2 采集 收起 来源:自定义权限

    2018-03-22

  • 组件篇 <application android:icon="@drawable/icon" android:theme="@style/my_theme">[...application nodes...] </application> 属性可以设置: 图标:android:icon 标题:android:label 主题样式:android:theme
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Android开发课程进阶部分的第1季,将讲解各种高级控件的使用,对于不熟悉Android开发的童鞋来说会有一定的难度,所以,建议在学习本门课程之前: 1、熟练掌握Java基础语法和面向对象编程 2、熟悉Android开发环境 3、熟练使用Button、ImageView等基础控件
老师告诉你能学到什么?
1、Android高级控件的应用场景 2、Android高级控件的使用方法 3、熟悉Android常用高级控件

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!