AS常用操作


Anriod Studio常用操作

B站主页

如何实现跳转

  1. 通常是通过某一个html文件中的button,需要跳转到另一个文件,那么两个activity就是必备条件。
  2. 比如我要在recyclerview中跳转到linearrecyclerview,步骤如下
    1. 首先在recyclerview文件中设置一个buttton
    2. 再在该java文件中,声明空间,找到空间,利用OnClick实现跳转
    3. 新建跳转到的activity文件
    4. 代码如下

布局属性注意事项

  1. 文字居中是gravity而不是layout_gravity
  2. 多元素注意margin的应用,区分个元素的距离
  3. 当按钮过多的时候,可以参照t04中的Mainactivity文件,写方法,每次只需要添加对应的元素即可

常见问题

  1. 当出现找不到对应文件的时候,首先要去确认你是在哪个包里调用的,如果确定调用的包没错之后,可以重启软件,便可以成功
  2. 添加的图片没有办法设置其大小
  3. 不能新建一个单独的drawable放自己想放的东西
  4. 不能添加网络图片,即使是导入了glide包,也依然没有成功

如何获取屏幕宽度

//设置宽度,获取屏幕宽度
WindowManager m = getWindow().getWindowManager();
Display d = m.getDefaultDisplay();
WindowManager.LayoutParams p = getWindow().getAttributes();
Point size = new Point();
d.getSize(size);
p.width = (int)(size.x * 0.8) ;//设置dialog的宽度为屏幕的0.8
getWindow().setAttributes(p);

如何全屏显示

  1. 在Java文件中添加

    getWindow().requestFeature(Window.FEATURE_NO_TITLE);//去掉标题
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
  2. 参考

如何去掉顶部菜单栏和状态栏

菜单栏

  1. 如何让顶部栏和手机自带的状态栏颜色一致https://blog.csdn.net/lwcumt/article/details/46633021

  2. 但是这个博客的办法有几个缺陷

    1. 如果是在布局文件中加入那两句话之后,通院原来有什么padding Top你会发现不起作用了,解决办法就是不要把paddingTop和这两句话写在一起
    2. 第二个就是,虽然是沉浸性,但是顶部栏是灰色的

如何上传文件到码云

  1. 新手入门一定要看这篇博客,特别详细,基本把可能遇到的问题都解决了https://www.cnblogs.com/hebau-may/p/6382743.html
  2. 如果有多个分支的话,可以看这篇博客是怎么传到除开master的分支的,因为我第一次就传到了master上,在团队项目中,这样的错误可能会给大家造成很大的麻烦,所以还是不要传错<https://blog.csdn.net/wenjiusui8083/article/details/80167073
  3. 第二次如何上传到码云上
    1. git remote add origin git@gitee.com:LipReader/LipReader.git
    2. git pull
    3. 查看分支:git branch -a
    4. 切换分支:git checkout -a
    5. git add .
    6. git commit -m “内容”
    7. git push
  4. 常见错误,需要删除文件
  5. 参考

如何实现侧滑效果

  1. 大致思路
    1. 将该布局分为主界面和侧滑界面,那么需要一个整体界面来放主界面和侧滑界面,所以一般一个完整的侧滑需要三个layout文件
    2. 没想现成的整体界面,所以需要一个java文件来写这个界面
    3. 最后是整体界面对应的java文件,实现相关功能
    4. 参考文献

设置TextView中的drawableLeft的图片大小

  1. 利用封装的类,换布局

  2. 参考文献

  3. 该布局常用的是,图片加文字加图片形式

  4. 代码

    <com.example.eva.TextImageView.TextImageView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:drawableLeft="@drawable/message"
        android:drawablePadding="20dp"
        android:drawableRight="@drawable/right"
        android:gravity="center_vertical"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="5dp"
        android:text="消息通知"
        android:textSize="20dp"
        app:drawableLeftHeight="30dp"
        app:drawableLeftWidth="30dp"
        app:drawableRightHeight="20dp"
        />

如何设置控件中的填充颜色为透明或者半透明

  1. background =“#00000000” 全透明
  2. background = "#e0000000"半透明
  3. 在java文件中设置透明度
    1. View v = findViewById(R.id.content);//找到你要设透明背景的layout 的id
    2. v.getBackground().setAlpha(100);//0~255透明度值

如何设置类似于圆形头像

<android.support.v7.widget.CardView
    android:id="@+id/cv_user_head"
    android:layout_width="60dp"
    android:layout_height="60dp"
    app:cardCornerRadius="45dp"
    app:cardElevation="10dp"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="20dp"
    app:cardPreventCornerOverlap="true"
   >
    <ImageView
        android:id="@+id/tv_user_head"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/head"
        android:scaleType="centerCrop"/>
</android.support.v7.widget.CardView>

如何设置textview

每行字数最大值

行数最大值

多余部分省略号表示

<TextView
    android:id="@+id/friend_content"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:text="@string/friend_content"
    android:maxLines="3"
    android:ellipsize="end"
    android:maxEms="10"
    />

如何实现图片轮播

  1. fragment里面
    1. 稍作修改就可以
  2. activity里面
  3. 参考博客https://blog.csdn.net/GYongJia/article/details/89645378

如何返回上一级

  1. 通常会有一个返回按钮

  2. 对该按钮或者图片设置点击事件

  3. 不用跳转,直接写finish();就可以了

    public class PersonalPageActivity extends AppCompatActivity {
    //    个人主页页面
        private ImageView mIVBack;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_personal_page);
    
            mIVBack = findViewById(R.id.iv_logo_person);
            mIVBack.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
        }
    }

如何做系统提示音

  1. 准备音频【录音也可以是音频转换工具】–>放入res下的raw包

  2. 利用mediaplayer

  3. 步骤:

    1. 声明变量mPlayer

      private MediaPlayer mPlayer = null;
    2. 让这个变量匹配对应的音频文件

    3. 播放

      //播放提示音效
      mPlayer = MediaPlayer.create(this,R.raw.chineselogin);
      mPlayer.start();
    4. 设置退出界面停止播放

      //退出界面之后就停止指导语音
      @Override
      public void onDestroy() {
          super.onDestroy();
          mPlayer.stop();
      }

如何实现中英文切换

  1. 刚开始的界面设置有中文和英文按钮,点击英文便跳转到英文对应的activity,相当于每个界面都要写中英文版本。
  2. 对,就是看着这么复杂,我问了一些学长学姐,包括上网,都没有找到什么自动切换这么简单

如何实现虚拟通信

  1. 配置好串口工具和助手

  2. 参考地址

  3. 参考地址

  4. 将其中一个文件夹下的文件配置清楚【我们创建SerialPortDemoApp项目,将android-serialport-api项目中的jni和libs文件夹与android-serialport-api文件夹分别移动到SerialPortDemoApp中的app与src/main/java目录下,如下图所示:

    】并在gradle下配置

    sourceSets {
         main {
             jniLibs.srcDir 'libs'
         }
     }
  5. java文件

    package com.example.eva;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.Button;
    
    import com.example.eva.util.ToastUtil;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import android_serialport_api.SerialPort;
    
    public class MaintenActivity extends AppCompatActivity {
        private Button mBtnUser;
        private Button mBtnMainten;
        private Button mBtnLearn;
        private Button mBtnListen;
        private Button mBtnBack;
        private SerialPort mSerialPort;
        OutputStream mOut;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_mainten);
    
            //沉浸式状态栏
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            }
    
            mBtnBack = findViewById(R.id.btn_back);
            mBtnLearn =findViewById(R.id.btn_learn);
            mBtnListen = findViewById(R.id.btn_listen);
            mBtnMainten = findViewById(R.id.btn_mainten);
            mBtnUser = findViewById(R.id.btn_user);
    
    
            //串口通信
            try {
                mSerialPort = new SerialPort(new File("/dev/ttyS1"),9600,0);
            } catch (IOException e) {
                e.printStackTrace();
            }
            mOut = mSerialPort.getOutputStream();
    
    
            mBtnBack.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
    
            setListener();
        }
    
        private void setListener(){
            OnClick onClick = new OnClick();
            mBtnUser.setOnClickListener(onClick);
            mBtnMainten.setOnClickListener(onClick);
            mBtnListen.setOnClickListener(onClick);
            mBtnLearn.setOnClickListener(onClick);
        }
    
        private class OnClick implements View.OnClickListener{
    
            @Override
            public void onClick(View v) {
                Intent intent = null;
                switch (v.getId()){
                    case R.id.btn_user:
                        //用户检测界面
                        try{
                            String send = "user";
                            byte[] context = send.getBytes();
                            mOut.write(context);
                            mOut.flush();
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                        break;
                    case R.id.btn_mainten:
                        //颜色识别模式
                        try{
                            String send = "color";
                            byte[] context = send.getBytes();
                            mOut.write(context);
                            mOut.flush();
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                        break;
                    case R.id.btn_listen:
                        //距离识别模式
                        try{
                            String send = "do";
                            byte[] context = send.getBytes();
                            mOut.write(context);
                            mOut.flush();
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                        break;
                    case R.id.btn_learn:
                        //机械运动模式
                        try{
                            String send = "juli";
                            byte[] context = send.getBytes();
                            mOut.write(context);
                            mOut.flush();
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                        break;
                }
            }
        }
    }
  6. cmd命令

    1. cd AppData\Local\Android\Sdk\emulator
    2. emulator @10.1_WXGA_Tablet_API_24 -writable-system -qemu -serial COM2
    3. l另外再打开一个cmd进行下列操作
      1. adb shell
      2. su
      3. cd /dev
      4. setenforce 0
      5. chmod 777 ttyS1
  7. 成功吼就运行程序便可以接受消息

数据库和服务端设置

flask配置

  1. pip install的时候,要注意不是在python下,是在cmd下
  2. 如果出现下载不了的情况,就要用镜像网站pip install --upgrade pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
  3. 其中–upgrade pip就是你需要下载的内容
  4. 安装参考文献
  5. flask案例

Author: Superior Leo
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Superior Leo !
评论
  TOC