Android_AutoRoom 1

AutoRoom

控制教室灯光

  • 安装过程
  • 具体流程
  • 遇见问题

    1. 安装过程
  • 工具:Android Studio2.3.3

尽量直接点击下一步安装,避免出现各种问题

  1. 具体流程

    • 需求分析

    • 功能

      • 查看每栋楼
      • 每间教室的灯光开关情况,并且可以进行开关控制
    • 架构

      • 常见的 title + framelayout + radiogroup
      • BaseFragment
    • 实现

      • 显示页面 splashActivity

        • 布局: 相对布局
        • 显示一个logo(这里直接用文字替带)
        • 右下角显示一个3s倒计时

    代码中有解释,完整代码在最后

    private int time = 3; //1. 右下角显示的数字
    private static final int SLPAHTIME = 0;  // 消息ID
// 2. 启动一个线程,延时1s开始发送空消息
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        tv_splash_time = (TextView) this.findViewById(R.id.tv_splash_time);
        new Thread(new Runnable() {
            @Override
            public void run() {
                handler.sendEmptyMessageDelayed(SLPAHTIME, 1000);
            }
        }).start();
    }
// 3. handler处理发送的消息,更新UI
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SLPAHTIME:
                    --time;
                    if (time < 0) {
                        startMainActivity(); // 跳转到新的activity,并且finish()当前activity
                    } else {
                        tv_splash_time.setText(time + ""); // 更新UI
                    }
                    handler.removeMessages(SLPAHTIME);
                    handler.sendEmptyMessageDelayed(SLPAHTIME, 1000);
                    break;
            }
        }
    };
    • 主页面显示

    • 主页面界面

      • Title
      • framelayout
      • RadioGroup

    主要代码说明

    使用线性布局,framelayout需要使用权重 , RadioGroup的所有组件必须有id

  • <?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"
      android:orientation="vertical"
      tools:context="com.ycxy.ymh.autoroom.activity.MainActivity">
    
    <!-- 1. 使用include清爽界面且能.. -->
      <include layout="@layout/titlebar" />
    
      <!-- 2. 替换baseFragment -->
      <FrameLayout
          android:id="@+id/frame_main"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_weight="1">
    
      </FrameLayout>
    
    <!-- 3. 切换选项 -->
      <RadioGroup
          android:id="@+id/rg_main"
          android:orientation="horizontal"
          android:layout_width="match_parent"
          android:layout_height="48dp">
    
          <RadioButton
              android:id="@+id/rg_main_pager"
              style="@style/botttom_tag_style"
              android:text="首页" />
    
          <RadioButton
              android:id="@+id/rg_main_per"
    
              style="@style/botttom_tag_style"
              android:text="个人" />
      </RadioGroup>
    </LinearLayout>
    
    • 主页面的切换

    • 具体实现

      1. 创建一个 BaseFragment继承Fragment(android.support.v4.app.Fragment;)
    public abstract class BaseFragment extends Fragment {
        protected Context mContext;
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mContext = getActivity();
        }
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
            return initView();
        }
    
        //  强制子类重写
        protected abstract View initView();
    
        // activity加载完成后开始初始化数据
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
            initData();
        }
    
        protected  void initData(){
    
        }
    }
    1. 创建集成basefragment的子类, MainPagerActivity(首页) 和 PerInfoActivity(个人)
    2. MainActivity中写切换逻辑(继承FragmentActivity)
    public class MainActivity extends FragmentActivity {
    
        private RadioGroup rg;
        private List<BaseFragment> mBaseFragment;
    
        /**
         * 选中的Fragment的对应的位置
         */
        private int position;
    
        /**
         * 上次切换的Fragment
         */
        private Fragment mContent;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    
            //初始化View
            initView();
            //初始化Fragment
            initFragment();
            //设置RadioGroup的监听
            setListener();
        }
    
        private void setListener() {
            rg.setOnCheckedChangeListener(new MyOnCheckedChangeListener());
            //设置默认选中常用框架
            rg.check(R.id.rg_main_pager);
        }
    
        class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {
    
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.rg_main_pager://常用框架
                        position = 0;
                        break;
                    case R.id.rg_main_per://第三方
                        position = 1;
                        break;
                    default:
                        position = 0;
                        break;
                }
    
                //根据位置得到对应的Fragment
                BaseFragment to = getFragment();
                //替换
                switchFrament(mContent, to);
    
            }
        }
    
    
        /**
         * @param from 刚显示的Fragment,马上就要被隐藏了
         * @param to   马上要切换到的Fragment,一会要显示
         */
        private void switchFrament(Fragment from, Fragment to) {
            if (from != to) {
                mContent = to;
                FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                //才切换
                //判断有没有被添加
                if (!to.isAdded()) {
                    //to没有被添加
                    //from隐藏
                    if (from != null) {
                        ft.hide(from);
                    }
                    //添加to
                    if (to != null) {
                        ft.add(R.id.frame_main, to).commit();
                    }
                } else {
                    //to已经被添加
                    // from隐藏
                    if (from != null) {
                        ft.hide(from);
                    }
                    //显示to
                    if (to != null) {
                        ft.show(to).commit();
                    }
                }
            }
    
        }
    
        /**
         * 根据位置得到对应的Fragment
         *
         * @return
         */
        private BaseFragment getFragment() {
            BaseFragment fragment = mBaseFragment.get(position);
            return fragment;
        }
    
        private void initFragment() {
            mBaseFragment = new ArrayList<>();
            mBaseFragment.add(new MainPagerActivity());//常用框架Fragment
            mBaseFragment.add(new PerInfoActivity());//第三方Fragment
        }
    
        private void initView() {
            setContentView(R.layout.activity_main);
    
            rg = (RadioGroup) this.findViewById(R.id.rg_main);
    
        }
    }
  • 个人信息页面

    • 具体功能以后更新

      1. 遇见问题

      2. 安装的时候很费时间,应该直接点击下一步。

      3. 优化编译速度教程

      4. Android studio快捷键 ctrl+space : 提示

      以后更新 …..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
android_app.sh是一个Android应用的脚本文件。在Android系统中,可以使用shell脚本来控制和管理应用程序的安装、卸载、启动和停止等操作。android_app.sh通过命令行的方式执行不同的操作,可以方便地进行Android应用的管理。 android_app.sh可以实现以下功能: 1. 应用的安装和卸载:通过使用android_app.sh脚本,可以方便地将应用安装到Android设备上。可以使用adb命令安装APK文件,也可以使用pm命令进行安装和卸载操作。这样可以避免手动在设备上进行操作,提高了效率。 2. 应用的启动和停止:android_app.sh可以通过命令行启动和停止Android应用。通过adb shell am start命令,可以启动指定应用的主Activity,而通过adb shell am force-stop命令,可以停止指定应用的运行。 3. 应用的清除缓存和数据:android_app.sh可以清除指定应用的缓存和数据。通过adb shell pm clear命令,可以清除指定应用的数据和缓存,回到应用初始的状态。 4. 应用的权限管理:android_app.sh可以修改和管理应用的权限。通过adb shell pm grant命令,可以为指定应用授予或撤销特定的权限,从而实现对应用的权限管理。 总之,android_app.sh是一个方便管理Android应用的脚本文件,可以通过命令行快速、方便地进行应用的安装、卸载、启动和停止等操作,提高了Android开发和测试的效率。同时也可以进行应用的权限管理,以及清除缓存和数据等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值