• 【新手连载】一:使用Android Studio搭建Android集成开发环境 http://bbs.itcast.cn/forum.php?mod=viewthread&tid=87055&fromuid=150705 (出处: 传智播客论坛_传智播客旗下社区) 一、Android Studio简单介绍  ...
    【新手连载】一:使用Android Studio搭建Android集成开发环境
    http://bbs.itcast.cn/forum.php?mod=viewthread&tid=87055&fromuid=150705

    (出处: 传智播客论坛_传智播客旗下社区)

    一、Android Studio简单介绍

      2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境)。它基于Intellij IDEA开发环境,旨在取代Eclipse和ADT(Android开发者工具)为开发者提供更好的开发工具。既然Google一直在努力推广,相信不久以后就有望赶上Eclipse。
    • 相比Eclipse,Android Studio IDE有自己的特点:
    • 对UI界面设计和编写代码有更好地支持,可以方便地调整设备上的多种分辨率。
    • 同样支持ProGuard工具和应用签名。
    • 不过,目前版本的Android Studio不能在同一窗口中管理多个项目。每个项目都会打开一个新窗口。我猜这是借鉴了Intellij IDEA的行为,而且Google近期不会对此做出调整。
    • 支持Gradle自动化构建工具,这真是极好的,但对于刚从Eclipse平台转移过来的开发者来说还需要一段时间去学习和适应。
    二、下载和安装相关软件
    2.1、开发环境 
      物理机版本:Win 8(64位)
      Java SDK版本:jdk-7u45-windows-x64(64位)
      Android Studio版本:android-studio-bundle-135.1740770-windows
      注:物理机版本和Java SDK版本必须要保持一致,即:同为64位或者同为32位。
    2.2、下载JDK
     官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html(链接下载速度可能有些慢,稍后会将文主收集的Android开发所需的软件集合整理出来,敬请期待,或者加文主Q1441761649索要)
      
      下载到本地电脑后双击进行安装。JDK的安装过程比较简单,安装过程基本上就是一路Next即可,做Java开发的人都会,在安装的时候只需要注意将JDK和JRE安装到同一个目录即可,JDK默认安装成功后,会在系统目录下出现两个文件夹,一个代表jdk,一个代表jre
      
      JDK的全称是Java SE Development Kit,也就是Java 开发工具箱。SE表示标准版。JDK是Java的核心,包含了Java的运行环境(Java Runtime Environment),一堆Java工具和给开发者开发应用程序时调用的Java类库。
      我们可以打开jdk的安装目录下的Bin目录,里面有许多后缀名为exe的可执行程序,如下图所示:
      
      这些都是JDK包含的工具,通过配置JDK的变量环境,我们可以方便地调用这些工具及它们的命令。
      JDK包含的基本工具主要有:
    • javac:Java编译器,将源代码转成字节码。
    • jar:打包工具,将相关的类文件打包成一个文件。
    • javadoc:文档生成器,从源码注释中提取文档。
    • java:运行编译后的java程序。
    2.3、配置Windows上JDK的变量环境  为了配置JDK的系统变量环境,我们需要设置两个系统变量,分别是JAVA_HOME,Path。下面是这两个变量的设置。
      1、JAVA_HOME
        先设置这个系统变量名称,变量值为JDK在你电脑上的安装路径:E:\Program Files\Java\jdk1.7.0_75创建好后则可以利用%JAVA_HOME%作为JDK安装目录的统一引用路径。
      
      2、Path
        PATH属性已存在,可直接编辑,在原来变量后追加:;%JAVA_HOME%\bin
      
      JDK环境变量的配置做Java开发的人都应该会,这里就不细讲了!
    2.4、Android Studio下载
      下载地址:http://developer.android.com/sdk/index.html,注意,下载Android Studio要FQ才行
      
      
      
      下载完成之后,得到一个如下图所示的安装包:
      
    2.5、Android Studio安装
      下载完成后,就可以开始安装了,用鼠标双击android-studio-bundle-135.1740770-windows.exe启动安装程序,Android Studio安装过程如下图所示:
      
      AndroidStudio是集成了Android SDK的,所以在安装的时候记得勾选上Android SDK
      
      
      
      
      
      
      这个安装过程有点久,需要一点时间。
      
      
    2.6、启动运行Android Studio
      Android Studio启动过程如下图所示:
      
      
      第一次启动AndroidStudio时,需要设置一下SDK的安装目录,因此会弹出如下图所示的对话框,
      
      设置Android SDK的安装目录,如下图所示:
      
      打开AndroidStudio之后,默认会帮我们创建一个app的项目,如下图所示:
      
      运行这个默认创建好的项目,为了运行方便,我们直接使用真机作为模拟器运行,如下图所示:
      
      注意,使用真机调试时,手机必须开启USB调试模式才行,如下图所示:
      
      在手机上面的运行结果如下图所示:
      
      手机上显示应用的桌面上也显示出了我们这个Android应用的图标,如下图所示:
      
      到此,使用Android Studio搭建Android集成开发环境的工作就全部完成了,测试也通过了!
    三、Android Studio的简单使用3.1查看安装好的Android SDK
      
      已经安装好的Android SDK版本如下图所示:
      
      我们可以看到,截止到今天为止,Anddroid的版本已经更新到Android5.1(API22)了,更新速度真的很快啊,Android5.1(API22)的相关内容现在还是处于【Not installed】状态,也就是还没有下载和安装,SDK Manager默认已经选中Android5.1(API22)的全部内容,我们如果想在Android5.1(API22)的平台下开发Android应用,那么可以下载Android5.1(API22)的相关内容,如下图所示:
      
      默认下载和安装好的Android5.0.1的开发包已经满足我们开发Android应用的需求了,如下图所示:
      

    展开全文
  • 关于Android的系统的搭建实验开发的相关事项,很详细。
  • 一、实验目的 掌握各类代码的分类管理知识,掌握移动电商项目主页架构搭建, 掌握Fragment的使用。掌握菜单页内容切换以及菜单样式切换的开发技术。 二、实验设备及器件 Android Studio 三、实验内容 1.创建一个...

    一、实验目的
    掌握各类代码的分类管理知识,掌握移动电商项目主页架构搭建, 掌握Fragment的使用。掌握菜单页内容切换以及菜单样式切换的开发技术。
    二、实验设备及器件
    Android Studio
    三、实验内容
    1.创建一个Android应用,设置项目名MobileShop,包名为com.huatec.edu.mobileshop,创建activity包存放Activity,创建fragment存放Fragment。
    2.创建drawable-xhdpi目录,解压图片资源包xhdpi.rar里的所有文件到该目录下。
    3.在fragment下创建HomeFragment,CategoryFragment,CartFragment,PersonFragment分别对应首页,分类,购物车,我的(个人中心)页面。
    4、在fragment下创建NavigationFragment作为主页最外层内容,上半部分切换各页面Fragment下半部分是导航栏,点击切换Fragment。
    5、修改MainActivity内容,将NavigationFragment添加到窗口显示。

    最终效果:在这里插入图片描述在这里插入图片描述
    代码结构:
    在这里插入图片描述
    资源结构:
    在这里插入图片描述
    四、实验步骤
    1、创建一个项目,项目名称:MobileShop 项目包名:com.huatec.edu.mobileshop
    然后加入项目需要的各种包:
    在这里插入图片描述
    2、创建drawable-xhdpi目录,解压图片资源包xhdpi.rar里的所有文件到该目录下。
    在这里插入图片描述
    3、在NavigationFragment添加一个导航栏,添加四个按钮,在点击不同按钮时切换到对应的页面,所以我们先创建四个Fragment。
    在layout里创建四个布局文件:fragment_home.xml、fragment_category.xml、fragment_cart.xml、fragment_person.xml。在com.huatec.edu.mobileshop.fragment包下创建4个Fragment类:HomeFragment,CategoryFragment,CartFragment,PersonFragment。代码如下:
    fragment_home.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!--首页测试页面-->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="首页"
            android:textSize="20sp"/>
    </LinearLayout>
    

    HomeFragment:

    package com.example.administrator.myapplication.fragment;
    
    import android.os.Bundle;
    import android.app.Fragment;
    import android.support.v4.view.LayoutInflaterCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.text.Layout;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.administrator.myapplication.R;
    
    /**
     * Created by Administrator on 2020/5/24 0024.
     */
    
        //fragment在教程P.139
        //ViewGroup在教程39
    
    public class HomeFragment extends Fragment {
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState){
            //用于创建和返回跟fragment关联的View对象
            View view = inflater.inflate(R.layout.fragment_home,container,false);
    //      LayoutInflater inflater:作用类似于findViewById(),
    //      findViewById()用来寻找xml布局下的具体的控件(Button、TextView等),
    //      LayoutInflater inflater()用来找res/layout/下的xml布局文件
    //      ViewGroup container:表示容器,View放在里面
    //      Bundle savedInstanceState:保存当前的状态,在活动的生命周期中,
    //                  只要离开了可见阶段,活动很可能就会被进程终止,这种机制能保存当时的状态
            return view;
        }
    }
    
    

    fragment_category.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!--分类测试页面-->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="分类"
            android:textSize="20sp"/>
    </LinearLayout>
    

    CategoryFragment:

    package com.example.administrator.myapplication.fragment;
    
    import android.os.Bundle;
    import android.app.Fragment;
    import android.support.v7.app.AppCompatActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.administrator.myapplication.R;
    
    /**
     * 分类fragment
     */
    
    public class CategoryFragment extends Fragment {
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState){
            View view = inflater.inflate(R.layout.fragment_category,container,false);
            return view;
        }
    }
    
    

    fragment_cart.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!--购物车测试页面 -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="购物车"
            android:textSize="20sp"/>
    </RelativeLayout>
    

    CartFragment:

    package com.example.administrator.myapplication.fragment;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.administrator.myapplication.R;
    
    /**
     * 购物车fragment
     */
    
    public class CartFragment extends Fragment {
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle saveInstenceState){
            View view = inflater.inflate(R.layout.fragment_cart,null);
            //inflate(int resource,ViewGroup root,boolean attachToRoot)
    
            //resource:布局资源id
    
            //root:resource生成view对象要填入的父布局。
            // 为null,则返回的view就是布局资源;否则,需要参照第三个参数
    
            //attachToRoot:是否将resource生成view对象填入root,以root作为最终返回view的根布局。
            // false,root不为null,则提供root的LayoutParams约束resource生成的view;
            // true,root不为null,以root作为最终返回view的根布局
    
            //inflate(int resource,ViewGroup root)
    
            //resource:布局资源
    
            //root:resource生成view对象要填入的父布局。
            // 为null,则返回的view就是布局资源的根布局;
            // 否则,返回的view以传入的root为根布局(相当于上面的那个第三个参数为true)
    
            return view;
        }
    }
    
    

    fragment_person.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!--个人中心测试-->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="个人中心"
            android:textSize="20sp"/>
    </RelativeLayout>
    

    PersonnalFragment:

    package com.example.administrator.myapplication.fragment;
    
    import android.os.Bundle;
    import android.os.ParcelUuid;
    import android.app.Fragment;
    import android.support.v7.app.AppCompatActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.administrator.myapplication.R;
    
    /**
     * 个人中心fragment
     */
    
    public class PersonFragment extends Fragment {
        public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                                 Bundle saveInstanceState){
            View view = inflater.inflate(R.layout.fragment_person,container,false);
            return view;
        }
    }
    
    

    创建完四个Fragment之后把他们添加到NavigationFragment的上半部,下半部分添加一个导航栏,以下是NavigationFragment对应的代码:

    fragment_navigation.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!--不显示Fragment的内容窗口-->
        <FrameLayout
            android:id="@+id/fl_main_navigation"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"></FrameLayout>
    
        <!--底部菜单栏-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:layout_weight="0">
    
        <!--首页菜单-->
        <ImageButton
            android:id="@+id/ib_home"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/black"
            android:src="@drawable/tab_item_home_normal"/>
    
            <!--分类菜单-->
            <ImageButton
                android:id="@+id/ib_category"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@android:color/black"
                android:src="@drawable/tab_item_category_normal"/>
    
            <!--购物车菜单-->
            <ImageButton
                android:id="@+id/ib_cart"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@android:color/black"
                android:src="@drawable/tab_item_cart_normal"/>
    
            <!--个人中心菜单-->
            <ImageButton
                android:id="@+id/ib_personal"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@android:color/black"
                android:src="@drawable/tab_item_personal_normal"/>
        </LinearLayout>
    </LinearLayout>
    

    NavigationFragment类代码:

    package com.example.administrator.myapplication.fragment;
    
    import android.app.Fragment;
    //import:导入,引入
    //导入的包必须一样的,新建了5个fragment,5个导入的包都要用这个
    
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageButton;
    
    import com.example.administrator.myapplication.R;
    
    /**
     * 导航fragment,包括内容区和下面的菜单栏
     */
    
    public class NavigationFragment extends Fragment implements  View.OnClickListener{
    //    底部上的四个图片按钮
        private ImageButton mIbHome;
        private ImageButton mIbCategory;
        private ImageButton mIbCart;
        private ImageButton mIbPersonal;
    //    定义几个控件的名字,私有的
    
    //    窗口显示的四个Fragment
        private HomeFragment homeFragment;
        private CategoryFragment categoryFragment;
        private CartFragment cartFragment;
        private PersonFragment personFragment;
    
        public  NavigationFragment() {
        }
    
        public View onCreateView(LayoutInflater inflater,ViewGroup container,
                                 Bundle saveInstanceState){
            View view = inflater.inflate(R.layout.fragment_navigation,container,false);
    //        inflate()的作用就是将一个用xml定义的布局文件查找出来,
    //        注意与findViewById()的区别,inflate是加载一个布局文件,
    //        而findViewById则是从布局文件中查找一个控件。
            //第三个参数为true那么返回可能就不是view。当为fale的时候返回就是View。
            //inflate(int resource,ViewGroup root,boolean attachToRoot)
    
            //resource:布局资源id
    
            //root:resource生成view对象要填入的父布局。
            //      为null,则返回的view就是布局资源;否则,需要参照第三个参数
    
            //attachToRoot:是否将resource生成view对象填入root,以root作为最终返回view的根布局。
            //      false,root不为null,则提供root的LayoutParams约束(限制)resource生成的view;
            //      true,root不为null,以root作为最终返回view的根布局
    
            //inflate(int resource,ViewGroup root)
    
            //resource:布局资源
    
            //root:resource生成view对象要填入的父布局。
            //      为null,则返回的view就是布局资源的根布局;
            //      否则,返回的view以传入的root为根布局(相当于上面的那个第三个参数为true)
    
    
    
    
            initView(view);//天字第一号进程
            //初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好。
            // 把该给我的分给我。布局文件和一些资源需要在代码里面知初始化声明,
            // 才能使用某些方法进行相关操作。简单点儿说,就道是你想加载页面,
            // 必须先要告诉我页面里面都有什么,然后你才能调用界面里控件的方法和属性,
            // 你不属初始化不告诉我,就找不到相关资源,就无法使用相关的方法。
            //初始化所有控件,第一种是全局的,比如你oncreate里初始化了,onresume里也可以用;
            //第二copy种是局部变量,
            // 比如你在Oncreate里初始化了,
            // 只能在Oncreate里用,到onresume里就不能使用了。
            return view;
        }   //这个意思就是返回要浏览的视图(也就是我们的页面文件)他的名字是与你的控制器名字一样的view
            //这里就是初始化完以后就返回视图 前面View view中的view;这个view是已经加了f_n的界面
    
        //
        //初始化fragment里所有的控件
        //
        protected void initView(View view){
    
            //获取菜单图片按钮实例对象
            mIbHome = view.findViewById(R.id.ib_home);
            //findViewById的返回值必须(默认)为View类型,(xx)findViewById(R.XX.XX)前面xx是强制转换类型;
            //view.findViewById(R.id.ib_home);view就是前面指定的View类有一个具体的方法就是调用 findViewById,并且传入一个资源 id,
            // findViewById 方法会找到与传入的 id 相对应的 View,
            // Activity 在 XML 的视图层次结构中搜索这个视图,再在 onCreate 方法中处理它,
            // 这个 activity 的 onCreate 方法建立了一个视图层次结构。然后 findViewById 方法遍历它,找到那个视图层次结构中的某个 View,这个方法的返回值是 View 类型的对象。
    
            mIbCategory = view.findViewById(R.id.ib_category);
            mIbCart = view.findViewById(R.id.ib_cart);
            mIbPersonal = view.findViewById(R.id.ib_personal);
    
            //图片按钮设置监听器,因为本类已实现View.onClickListener,
            // 所以可以使用本类做按钮监听,就是点击按钮才会运行的
            mIbHome.setOnClickListener(this);
            mIbCategory.setOnClickListener(this);
            mIbCart.setOnClickListener(this);
            mIbPersonal.setOnClickListener(this);
    
            //初始化所有控件后,默认选中并显示内容
            select(mIbHome);
        }
    
        private void select(View v) {
            //重置UI,将按钮菜单全部恢复为未选中的状态
           /* Android 获取设置好的image.setImageResource(R.drawable.xxx)资源
    
                    第一步设置资源
            image.setImageResource(R.drawable.xxx);
            image.setTag(R.drawable.xxx);
            第二步获取资源
            int res = (int) image.getTag();
            第三步做一些判断
            if(res==R.drawable.xxa){
    ……..
            }else if(res==R.drawable.xxb){
    …….
            }*/
            mIbHome.setImageResource(R.drawable.tab_item_home_normal);
            mIbCategory.setImageResource(R.drawable.tab_item_category_normal);
            mIbCart.setImageResource(R.drawable.tab_item_cart_normal);
            mIbPersonal.setImageResource(R.drawable.tab_item_personal_normal);
    
            //启动fragment事务管理fragment
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    //        FragmentTransaction 的创建:
    //        FragmentTransaction是用来换页面的,
    //        ed:想从微信的消息页面换到通讯录的页面就要用这个才行。
    
            //隐藏所有Fragment
            if (homeFragment != null) {
                fragmentTransaction.hide(homeFragment);
                //hide(Fragement fragment)
    //            hide(Fragment fragment): hide	隐藏容器中的 Fragment
    //            隐藏已经存在的fragment,
    //            只适用那些视图已经被添加到容器中的Fragment,
    //            hide 和 show 是配对的,当要显示隐藏的 Fragment A 时,就 show(A);
    //            而对于其他 Fragment,则先 hide 起来,等之后要显示时再 show
    //            fragmentTransaction.hide(homeFragment);
    //                 事物管理,隐藏(显示),(叫xx);
    //              如果可找到homeFragment,不为空,
    //              打开的是这个页面,就把它藏起来。
    //              ed:微信消息页面换到通讯录页面要把消息页面隐藏起来。
            }
            if (cartFragment != null) {
                fragmentTransaction.hide(cartFragment);
                //不为空代表已经有实例了  不需要new
            }
            if (categoryFragment != null) {
                fragmentTransaction.hide(categoryFragment);
            }
            if (personFragment != null) {
                fragmentTransaction.hide(personFragment);
            }
    
    //        根据选中的菜单按钮的id来执行不同的操作
            switch (v.getId()){
    //            循环语句switch,获取其资源id,通过资源id,可以判断用户点击了哪个按钮了
    //// switch语句格式
    //            switch(表达式){
    //                case 值1:
    //                    语句体1;
    //                    break;}
    
                case R.id.ib_home://点击了首页菜单
                    mIbHome.setImageResource(R.drawable.tab_item_home_focus);
                    //设置菜单图片为这张
                    if (homeFragment == null){
                        //如果fragment未初始化,则初始化在加入显示
                        //一个按钮已经点过一次了,按钮已经暗了
                        // 还想再点一次,就要初始化回到没点击之前,之后就可再点了。
                        //不然会出现点了没有用,跟没点一样的情况(不显示),它已经被按下去了,
                        //不恢复一下,就没法再点了
                        homeFragment = new HomeFragment();
                        fragmentTransaction.add(R.id.fl_main_navigation,homeFragment);
                        //addToBackStack()是把被替换的Fragment放入回退栈中
            }
            else{
                        //如果fragment已经初始化,则直接显示,
                        fragmentTransaction.show(homeFragment);
                    }
                    break;
                case R.id.ib_category:
                    mIbCategory.setImageResource(R.drawable.tab_item_category_focus);
                    if (categoryFragment == null){
                        //为空代表没有实例  需要new一个
                        categoryFragment = new CategoryFragment();
                        fragmentTransaction.add(R.id.fl_main_navigation,categoryFragment);
                    }
                    else{
                        fragmentTransaction.show(categoryFragment);
                        //show,hide,remove 格式都是一样的
                    }
                    break;
                case R.id.ib_cart:
                    mIbCart.setImageResource(R.drawable.tab_item_cart_focus);
                    if (cartFragment == null){
                        cartFragment = new CartFragment();
                        fragmentTransaction.add(R.id.fl_main_navigation,cartFragment);
                    }
                    else{
                        fragmentTransaction.show(cartFragment);
                    }
                    break;
                case R.id.ib_personal:
                    mIbPersonal.setImageResource(R.drawable.tab_item_personal_focus);
                    if (personFragment == null){
                        personFragment = new PersonFragment();
                        fragmentTransaction.add(R.id.fl_main_navigation,personFragment);
                    }
                    else{
                        fragmentTransaction.show(personFragment);
                        //show(Fragement fragment)
                    }
                    break;
            }
            fragmentTransaction.commit();
        }
    
    
        @Override
        public void onClick(View v) {
                select(v);
        }
    }
    
    

    4、修改MainActivity内容,将NavigationFragment添加到窗口显示。

    activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.administrator.myapplication.acticity.MainActivity">
    
        <FrameLayout
            android:id="@+id/fl_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></FrameLayout>
    </LinearLayout>
    
    

    MainActivity代码:

    package com.example.administrator.myapplication.acticity;
    
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import com.example.administrator.myapplication.R;
    import com.example.administrator.myapplication.fragment.NavigationFragment;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //调用父类的oncreate方法,完成系统工作,父类指AppCompatActivity(源码里)
    
            setContentView(R.layout.activity_main);
            //一旦调用 setContentView,activity就会找到 XML 布局文件,并且读取它的每行代码,
            //我们没有创建新的 TextView对象,我们只是在视图树中找到了现有的 TextView,
            // 为了与这个视图树中的 View 进行交互,我们应该创建变量,用来引用这些具体的 View,
    
            initView();
        }
    
    //    初始化控件
        protected void initView(){
            //开始fragment事务
            //FragmentTransaction 的创建
            FragmentManager fragmentManager = getFragmentManager();
            //getFragmentManager();来获得一个对象赋给fragmentManager;找实例的
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                //                                               //返回(开始一个事务)事务对象
    
            // FragmentTransaction transaction = getFragmentManager().beginTransaction();
    
            //将fragment添加到activity_main.xml的fl_main控件上
            fragmentTransaction.replace(R.id.fl_main, new NavigationFragment());
                                //先将之前存在于容器的 Fragment 全部移除(销毁),
                                // 然后添加要显示的 Fragment(会重新执行一遍它的生命流程)
            //显示NavigationFragment,还没有,先new一个 后replace(显示)它
            //xx方法里的 , 功能 , (在哪实现,实现的是什么)
            fragmentTransaction.commit();
            //提交事务
            //FragmentTransaction现在提供了四种不同的方法来commit一个
            // transaction:commit()、
            // commitAllowingStateLoss()、
            // commitNow()、立即执行并且只会执行你当前要提交的transaction。
            // commitNowAllowingStateLoss()。
            // 1.如果你操作很多transactions, 并且不需要同步, 或者你需要把transactions加在back stack里, 那就使用commit().
            // 2.如果你需要同步的操作, 并且你不需要加到back stack里, 使用commitNow().
            // 3.当报错“IllegalStateException:Can not perform this action after onSaveInstanceState”时,使用commitAllowingStateLoss()。
            // 4.如果你希望在某一个指定的点, 确保所有的transactions都被执行, 那么使用executePendingTransactions().
        }
    }
    
    

    结果:
    在这里插入图片描述
    篮奏云apk地址:
    https://rod.lanzous.com/b0dk28ida
    密码:6k50

    展开全文
  • 一、Android开发环境目前有两种,针对IDE可分为Eclipse 和 Android Studio两类。 1. 基于Eclipse需要的开发套件: a. JDK b. Eclipse c. ADT插件 d. Android SDK 2. 基于Android Studio需要的开发套件: a. JDK b...

    一、Android开发环境目前有两种,针对IDE可分为Eclipse 和 Android Studio两类。

    1. 基于Eclipse需要的开发套件:

    a. JDK

    b. Eclipse

    c. ADT插件

    d. Android SDK


    2. 基于Android Studio需要的开发套件:

    a. JDK

    b. Android Studio


    二、现在就安装各套件需注意的地方总结如下

    1. 两种开发环境都必须先下载并安装JDK,JDK的下载安装方法可参考

    http://www.cnblogs.com/smyhvae/p/3788534.html

    JDK安装的注意事项可参考:

    http://blog.csdn.net/phenixyf/article/details/50857304

    2.Android SDK的安装

    因google原因,需要翻墙,可以通过先安装AS再安装SDK,这样不用翻墙,具体流程参考

    http://blog.csdn.net/phenixyf/article/details/50857304

    AS安装SDK后,可以通过打开其SDK Manager图标查看SDK安装路径

    此时下载下来的SDK还没安装完全,需在SDK所在目录下执行SDK Manager.exe程序

    然后安装或更新如下项目

    SDK Tools :14.3 
    SDK Platform-tools :22 
    SDK Build-tools 22.01 
    android 5.0.1 (api 21):必须下载:SDK Platform 、Samples for SDK 、GoogleAPIs 、Intel x86 System Image

    具体可参考:http://blog.csdn.net/yy1300326388/article/details/46365053


    另外,SDK的安装还可参考:http://www.cnblogs.com/smyhvae/p/3788555.html


    SDK在AS和Eclipse中的配置可以自行百度。


    3. ADT的下载安装:

    在Eclipse环境中,还要下载配置ADT,同样要翻墙,国内下载地址:http://androiddevtools.cn/

    配置方法参考:http://www.crifan.com/android_eclipse_offline_install_adt/


    ADT环境变量的设置:


    注意:该环境变量变量值设置的路径,不是ADT的安装或下载路径,而是以后使用AVD时,AVD建立的工作文件所在路径。




    展开全文
  • Android实验报告

    2018-06-27 15:31:26
    录实验一 Android开发环境的搭建 41 实验目的及要求 42 实验设备(环境)及要求 43 实验内容 44 实验步骤 45 实验核心代码(关键代码),及调试中的问题 46 实验的运行结果及分析 47 实验总结心得体会 4实验二 ...

    CSDN下载:https://download.csdn.net/download/eseszb/10502954


      

    实验一 Android开发环境的搭建 4

    1 实验目的及要求 4

    2 实验设备(环境)及要求 4

    3 实验内容 4

    4 实验步骤 4

    5 实验核心代码(关键代码),及调试中的问题 4

    6 实验的运行结果及分析 4

    7 实验总结心得体会 4

    实验二 GUI创建套件Widget的使用 4

    1 实验目的及要求 4

    2 实验设备(环境)及要求 4

    3 实验内容 4

    4 实验步骤 4

    5 实验核心代码(关键代码),及调试中的问题 4

    6 实验的运行结果及分析 4

    7 实验总结心得体会 5

    实验三 SQLite应用 5

    1 实验目的及要求 5

    2 实验设备(环境)及要求 5

    3 实验内容 5

    4 实验步骤 5

    5 实验核心代码(关键代码),及调试中的问题 5

    6 实验的运行结果及分析 5

    7 实验总结心得体会 5

    实验四 获取手机剩余电量 5

    1 实验目的及要求 5

    2 实验设备(环境)及要求 5

    3 实验内容 5

    4 实验步骤 5

    5 实验核心代码(关键代码),及调试中的问题 5

    6 实验的运行结果及分析 6

    7 实验总结心得体会 6

    实验五 网络访问与服务 6

    1 实验目的及要求 6

    2 实验设备(环境)及要求 6

    3 实验内容 6

    4 实验步骤 6

    5 实验核心代码(关键代码),及调试中的问题 6

    6 实验的运行结果及分析 6

    7 实验总结心得体会 6

    实验六 Service的使用 6

    1 实验目的及要求 6

    2 实验设备(环境)及要求 6

    3 实验内容 6

    4 实验步骤 6

    5 实验核心代码(关键代码),及调试中的问题 7

    6 实验的运行结果及分析 7

    7 实验总结心得体会 7

     

    实验一 Android开发环境的搭建

    1 实验目的及要求

    1. 搭建 Eclipse+Android开发平台

    2. 创建简Android应用程序

    3. 创建 Activity并利 Intent的实现

    2 实验设备(环境)及要求

       Window 7 系统  eclipse软件 JDK的配置

    3 实验内容

    1.搭建 Eclipse+Android开发环境

    2.创建一个简単的“Hel1o,World!”工程

    3.创建西个 Activity, 实现简単的 Activity之间的参数传递

    4 实验步骤

    4.1搭建 Eclipse+Android开发环境

    下载并安装 JAVAJDK,建议下载“jd],(-6u27-windows-i586.exe”

    下载 Eclipse, 建议下载“Eclipse IDE for JavaEE  Deve1opers(eclipse-jee-indigo-win32)'' 

    下载并安装Android SDK

    Eclipse中安装外挂程序ADT(Android Deve1opment Tools)

    设置Android SDK的路径

    创建Andr0id虚拟设备, Eclipse上単击Andr0id按钮

    安装手机 USB驱动

    4.2建立新项日 Hel1oWorld,实现输出“He11oWorld''

    运行Eclipse,“File→ New→ Project'',选择“AndroidProject'

    运行项目:选择要运行的项目右击弹出菜単,选择“RunAs→ AndroidApplication''

    应用程序的国际化。在 res中新建 values-zh文件夹, 在 res\values-zh、strings.xm1増加字段

    修改He11oWorldActivityjava,然后再运行一次。

    4.3创建西个 Activity, 实现简単的 Activity之间的参数传

    新建项目,在 res、values中新建MainActivity资源文件mainres.xm1

    在 res\1ayout中新建 MainActivity的布局文件 main.xm1

    修改 MainActivity 的源文件 MainActivity.java

    修改AndroidManifest.xm1

    实验核心代码(关键代码),及调试中的问题

    实验二 GUI创建套件Widget的使用

    1 实验目的及要求

    1.掌据资源编辑器、布局编辑器的使用

    2.掌握按钮、编辑框、日期时间、对话框、下拉列表等主要Widget组编程

    2 实验设备(环境)及要求

       Window 7 系统  eclipse软件 JDK的配置

    实验内容

    1. 设计界面,包括图片按钮、复选按钮、单选按钮、普通,単击按钮弹出对

      2.设计一个,包括単自动示文本框、多项动提示文柜、下拉列表。

    4 实验步骤

    1.设计界面,包括图片按钮、复选按钮、单选按钮、普通,単击按钮弹出对

    新建项目 Button,res\1ayout中修改布局文作 main.xm1

    编辑 Activity 程序文件 ButtonActivityjava

    继承 Dia1og,新建自定义的对话框类 DialogPro

    2.设计一个,包括単自动示文本框、多项动提示文柜、下拉列表。

    新建项目 Edit,修改资源文件res\values\strings.xm1。

    res、layout中修改布局文件 main.xml

    编辑 Activity 程序文件 EditActivityjava

    实验核心代码(关键代码),及调试中的问题


    展开全文
  • 搭建Android开发环境——Eclipse Andriod SDK Eclipse ADT Android SDK SDK介绍 SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统...

    搭建Android开发环境——Eclipse

    • Andriod SDK
    • Eclipse
    • ADT

    Android SDK

    • SDK介绍
      SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
      因此,Android SDK 指的是Android专属的软件开发工具包。
      参考博客 [2017年Android SDK下载安装及配置教程 ]

    • SDK下载
      下面提供两种下载SDK方式:
      官网(可翻墙选择):http://developer.android.com/sdk/index.html
      不可翻墙选择:http://www.androiddevtools.cn/
      我使用的是第二种方式,流程如下:

      根据自己的操作系统选择相应的压缩包,解压到指定路径。
      这里写图片描述
      打开SDK Manager,你会看到很多可供下载的SDK版本
      (1)Tools中选择勾选一下几个即可。
      这里我是因为后来出现了兼容方面的问题多下了24的Build-tools。

      这里写图片描述
      (2)API选择任意一个,考虑向下兼容原则,可以选择最新版本。
      但是强烈建议安装一些低版本的API,有可能出现一些问题,需要用到低版本的,不如在一开始的时候全部安装完毕,一劳永逸。
      (3)Extras的全选
      这里写图片描述

    • 设置环境变量
      (1)新建一个环境变量: ANDROID_SDK_HOME 变量值就是安装SDK的路径
      这里写图片描述
      (2)在Path变量下新建两个值 %ANDROID_SDK_HOME%\platform-tools 和 %ANDROID_SDK_HOME%\tools 这里写图片描述

    • 检测是否配置成功
      在命令行中输入adb(命令行可以用win+r,输入cmd打开),出现下列内容则配置成功。
      这里写图片描述

    Eclipse

    Android开发是用Java语言来编写的,这里默认读者已经将JDK配置完毕,并且安装好Eclipse。
    安装好SDK后,只需要在Window-Preferences中将你安装SDk的路径填入SDK Location 即可,系统会自动扫描当前文件夹下的API,点击Apply and Close就完成了。
    这里写图片描述

    ADT

    ADT(Android开发工具),其作用是用于关联Android SDK,可以让你的Eclipse能够创建Android工程,是在windows系统平台上SDK环境下用来开发安卓软件所必不可少的本地安装插件。
    ADT是Eclipse中的一个插件,可以选择在线安装和离线安装。不过在线安装的方式,ADT插件是从http://dl-ssl.google.com/android/eclipse/ 这个网站下载,需要翻墙,所以不建议在线安装。
    离线安装的中心思想就是先下载好ADT的压缩包,然后打开Eclipse进行安装。
    - 下载ADT
    http://blog.csdn.net/tomatulip/article/details/75453780
    这里这位博主已经整理好了下载地址,点击下载即可,下载好的压缩包不用解压。
    - 在Eclipse中安装ADT
    在Eclipse中点击Help-Install New Software,会跳出安装插件的窗口。点击Add,名字可以设置为ADT+你要安装的版本号,然后点击Achieve,选择你刚刚下载的压缩包,结果如图。
    这里写图片描述
    这里写图片描述
    点击Next即可开始安装。
    这里说明一下,可以将最后一个Contact all update sites during install to find required software 前面的勾去掉,否则在安装过程中会一直卡在calculating requirements and dependencies(计算需求和依赖性 )处;这个问题的另一个解决办法是断开本地网络,就可以直接安装。
    安装过程中出现要求只管OK过去就好,等待安装完毕就搭建好了开发Android项目的环境。快开启你的第一个项目吧!

    展开全文
  • 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android...
  • Android使用java作为开发语言,所以进行Android开发时java环境是必备的。1、下载Java开发包 — Java SE Development Kit (JDK) JDK 6下载地址为:...
  • 实验实验报告————Android基础开发 任务一 关于R类 关于apk文件 实验成果 任务二 活动声明周期 实验成果 任务三 关于PendingIntent类 实验成果 任务四 关于布局 实验成果 任务五 实验成果 转载...
  • 有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环境,不过一直没有发表出来,写...
  • 20145308刘昊阳 《Java程序设计》实验Android环境搭建 实验报告 实验名称 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输出学号 统计的PSP(Personal Software Process)时间 步骤 ...
  • 虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门了,但是很多的知识点都是零零散散的,也缺少了总结。  相信凭借着对于linux内核层,android framework层的熟悉,加上也写过简单的...
  • 实验3 搭建主页框架

    2018-12-23 22:42:53
    搭建项目框架掌握Android Activity组件使用和Intent机制,加强Activity生命周期的理解,掌握Fragment的使用。 二.实验设备及器件 Android studio,图标 三.实验内容 1.创建一个android应用,设置工程名MobileShop...
  • 实验1:第一个Android程序 一、实验目的: 了解Android应用程序开发环境的搭建方法; 使用eclipse+ADT插件和Android Studio开发应用程序的一般步骤 二、实验内容: 安装JDK并配置好环境变量; 安装eclipse和...
  • MTK Android 编译环境搭建总结 环境部署 基本环境需求: 硬盘: 大于200G 内存: 大于16G OS: ubuntu14.04, ubuntu16.04, ubuntu18.04 否则空间或内存不足,导致编译错误或编译时间太长。 测试平台: MTK P23 1、...
  • 本章主要介绍如何搭建android底层开发的环境,主要包括android应用程序开发环境、android NDK开发环境个交叉编译环境的搭建。 首先开发、测试和调试linux驱动、HAL程序库需要以下工具: 1.JDK6或以上版本; 2....
  • 实验四 Android程序设计实验总结 课程:《程序设计与数据结构》 班级:1723 实验教师:王志强 姓名:段志轩 学号:20172304 实验日期:2017年5月29号 必修/选修:必修 实验内容 (1)Android Stuidio的安装测试: ...
  • 实验四《Android开发基础》实验报告 实验报告封面 实验内容 Android程序设计-1 实验要求: 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章: 参考...
1 2 3 4 5 ... 20
收藏数 2,735
精华内容 1,094