Anriod Studio常用操作
如何实现跳转
- 通常是通过某一个html文件中的button,需要跳转到另一个文件,那么两个activity就是必备条件。
- 比如我要在recyclerview中跳转到linearrecyclerview,步骤如下
- 首先在recyclerview文件中设置一个buttton
- 再在该java文件中,声明空间,找到空间,利用OnClick实现跳转
- 新建跳转到的activity文件
- 代码如下
布局属性注意事项
- 文字居中是gravity而不是layout_gravity
- 多元素注意margin的应用,区分个元素的距离
- 当按钮过多的时候,可以参照t04中的Mainactivity文件,写方法,每次只需要添加对应的元素即可
常见问题
- 当出现找不到对应文件的时候,首先要去确认你是在哪个包里调用的,如果确定调用的包没错之后,可以重启软件,便可以成功
- 添加的图片没有办法设置其大小
- 不能新建一个单独的drawable放自己想放的东西
- 不能添加网络图片,即使是导入了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);
如何全屏显示
-
在Java文件中添加
getWindow().requestFeature(Window.FEATURE_NO_TITLE);//去掉标题 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
如何去掉顶部菜单栏和状态栏
-
如何让顶部栏和手机自带的状态栏颜色一致https://blog.csdn.net/lwcumt/article/details/46633021
-
但是这个博客的办法有几个缺陷
- 如果是在布局文件中加入那两句话之后,通院原来有什么padding Top你会发现不起作用了,解决办法就是不要把paddingTop和这两句话写在一起
- 第二个就是,虽然是沉浸性,但是顶部栏是灰色的
如何上传文件到码云
- 新手入门一定要看这篇博客,特别详细,基本把可能遇到的问题都解决了https://www.cnblogs.com/hebau-may/p/6382743.html
- 如果有多个分支的话,可以看这篇博客是怎么传到除开master的分支的,因为我第一次就传到了master上,在团队项目中,这样的错误可能会给大家造成很大的麻烦,所以还是不要传错<https://blog.csdn.net/wenjiusui8083/article/details/80167073
- 第二次如何上传到码云上
- git remote add origin git@gitee.com:LipReader/LipReader.git
- git pull
- 查看分支:git branch -a
- 切换分支:git checkout -a
- git add .
- git commit -m “内容”
- git push
- 常见错误,需要删除文件
- 参考
如何实现侧滑效果
- 大致思路
- 将该布局分为主界面和侧滑界面,那么需要一个整体界面来放主界面和侧滑界面,所以一般一个完整的侧滑需要三个layout文件
- 没想现成的整体界面,所以需要一个java文件来写这个界面
- 最后是整体界面对应的java文件,实现相关功能
- 参考文献
设置TextView中的drawableLeft的图片大小
-
利用封装的类,换布局
-
该布局常用的是,图片加文字加图片形式
-
代码
<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" />
如何设置控件中的填充颜色为透明或者半透明
- background =“#00000000” 全透明
- background = "#e0000000"半透明
- 在java文件中设置透明度
- View v = findViewById(R.id.content);//找到你要设透明背景的layout 的id
- 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"
/>
如何实现图片轮播
- fragment里面
- 稍作修改就可以
- activity里面
- 参考博客https://blog.csdn.net/GYongJia/article/details/89645378
如何返回上一级
-
通常会有一个返回按钮
-
对该按钮或者图片设置点击事件
-
不用跳转,直接写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(); } }); } }
如何做系统提示音
-
准备音频【录音也可以是音频转换工具】–>放入res下的raw包
-
利用mediaplayer
-
步骤:
-
声明变量mPlayer
private MediaPlayer mPlayer = null;
-
让这个变量匹配对应的音频文件
-
播放
//播放提示音效 mPlayer = MediaPlayer.create(this,R.raw.chineselogin); mPlayer.start();
-
设置退出界面停止播放
//退出界面之后就停止指导语音 @Override public void onDestroy() { super.onDestroy(); mPlayer.stop(); }
-
如何实现中英文切换
- 刚开始的界面设置有中文和英文按钮,点击英文便跳转到英文对应的activity,相当于每个界面都要写中英文版本。
- 对,就是看着这么复杂,我问了一些学长学姐,包括上网,都没有找到什么自动切换这么简单
如何实现虚拟通信
-
配置好串口工具和助手
-
将其中一个文件夹下的文件配置清楚【我们创建SerialPortDemoApp项目,将android-serialport-api项目中的jni和libs文件夹与
android-serialport-api
文件夹分别移动到SerialPortDemoApp中的app与src/main/java目录下,如下图所示:】并在gradle下配置
sourceSets { main { jniLibs.srcDir 'libs' } }
-
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; } } } }
-
cmd命令
- cd AppData\Local\Android\Sdk\emulator
- emulator @10.1_WXGA_Tablet_API_24 -writable-system -qemu -serial COM2
- l另外再打开一个cmd进行下列操作
- adb shell
- su
- cd /dev
- setenforce 0
- chmod 777 ttyS1
-
成功吼就运行程序便可以接受消息
数据库和服务端设置
flask配置
- pip install的时候,要注意不是在python下,是在cmd下
- 如果出现下载不了的情况,就要用镜像网站pip install --upgrade pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- 其中–upgrade pip就是你需要下载的内容
- 安装参考文献
- flask案例