实现Snackbar弹出时任意View闪躲

简介

Snackbar 是一个底部弹出消息的控件,类似Toast。

基本使用:

1
2
3
Snackbar.make(view, message_text, duration)
.setAction(action_text, click_listener)
.show();

我们知道,在根布局是CoordinatorLayout,并且设置CoordinatorLayout的behavior之后,可以实现Snackbar弹出的时候,fab(浮动按钮)会自动向上移动防止被遮挡。

阅读更多

VectorDrawable(xml)转换回SVG

Android 用的矢量图是 VectorDrawable(xml格式)。

如果我们想对已经转换成 VectorDrawable 的矢量图进行修改的话,

最好先转换回 SVG 格式再使用 inkscape 之类的矢量图图形编辑工具进行修改。

步骤

  1. 将头部的:

    1
    2
    <?xml version="1.0" encoding="utf-8"?>
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

    替换成

    1
    <svg xmlns="http://www.w3.org/2000/svg"

    闭标签也做相应修改。

  2. android:width替换成width

  3. android:height替换成height

  4. android:pathData替换成d

  5. android:fillColor替换成fill

    如果没有android:fillcolor的话,要加上fill="#ffffff"

  6. android:viewportHeight="24" android:viewportWidth="24"替换成viewBox="0 0 24 24"的形式。

例子

Vector Drawable

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">

<path
android:fillColor="#ffffff"
android:pathData="M12,3L2,12h3v8h2.5v-0.8c0-1.5,3-2.2,4.5-2.2s4.5,0.8,4.5,2.2V20H19v-8h3L12,3zM12,15.2c1.2,0-2.2-1-2.2-2.2 s1-2.2,2.2-2.2s2.2,1,2.2,2.2S13.2,15.2,12,15.2z" />
<path android:pathData="M0,0h24v24H0V0z" />
</vector>

SVG

1
2
3
4
5
6
7
8
9
10
<svg xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24" >

<path
fill="#ffffff"
d="M12,3L2,12h3v8h2.5v-0.8c0-1.5,3-2.2,4.5-2.2s4.5,0.8,4.5,2.2V20H19v8h3L12,3zM12,15.2c1.2,0-2.2-1-2.2-2.2 s1-2.2,2.2-2.2s2.2,1,2.2,2.2S13.2,15.2,12,15.2z" />
<path d="M0,0h24v24H0V0z" fill="none"/>
</svg>

参考

https://stackoverflow.com/questions/44948396/convert-vectordrawable-to-svg

[Git]开发中途清理.igonore新增的忽略文件

中途修改.gitignore文件后,直接commit的话,以前git跟踪的文件就算添加进忽略里,依旧会跟踪变化。


获取.gitignore文件模板

https://github.com/github/gitignore


删除已经跟踪的文件

  1. 修改.gitignore文件后,先进行一次commit操作。

    git commit -m "update .gitignore"

  2. 然后,清空本地暂存区的内容:

    git rm -rf --cached .

  3. 再次添加跟踪文件:

    git add .

  4. 再进行一遍commit提交修改。

    git commit -m "delete files that should not be tracked"

我本地测试的时候,似乎修改.gitigonore文件的操作和下面的操作要分属两个commit才能生效。

不过也有可能是操作问题,这里有待检验。

阅读更多

魅族Flyme和华为EMUI真机调试看不到log的解决

Flyme 7

打开设置辅助功能开发者选项性能优化高级日志输出,将其设为全部允许就好了。

选项藏得挺深,而且在设置中的搜索功能是搜索不到这个选项的。

EMUI

没有EMUI实机,这是网传方法:

拨号界面输入 ##2846579## 打开工程菜单,再将“LOG设置”中AP日志打开。

参考链接

android studio中崩溃无法查看log?

从领取Github教育礼包到DigitalOcean购买服务器

本文首发于我的简书页面

自己想要一台国外的服务器用作某些用途,恰好自己学校又提供了教育邮箱。于是就打算拿Github的教育礼包中DigitalOcean的50美元优惠码来使用一年。

不过根据网上的一些文章,途中也遇到了一些坑。

最后也顺利地在2018/6/11一天内搞定了。所以打算记录一下自己的全过程,以供大家参考。

你所需要准备的东西

  • Github 账号
  • 一个教育邮箱(edu或者是edu.cn结尾都可以)
    如果没有的话,也可以用学生证之类的东西。不过我没试过。
  • 一个PayPal账号(你需要至少支付5美元)
阅读更多

阿里云服务器CentOS搭建Minecraft服务器

前期准备

购买云服务器

本文选择的是阿里云+CentOS。

安装 Java 环境

首先使用以下命令来分别检查 java 和 jdk 的安装状况。

1
2
java -version
rpm -qa | grep jdk

如果没有安装的话,可以用yum方式安装:

1
yum -y install java-1.8.0-openjdk*

阅读更多

Java DFS+贪心解决骑士游历问题

题目

骑士游历

骑士游历问题是指,在国际象棋的棋盘(8行*8列)上,一个马要遍历棋盘,即走到棋盘上的每一格,并且每隔只到达一次。设码在棋盘的某一位置(x,y)上,按照“走马日”的规则,下一步有8个方向走,如图所示。若给定起始位置(x0,y0),使用站和队列探索出一条马遍历棋盘的路径。

8 1
7 2
6 3
5 4
阅读更多

Java 分别用栈dfs和队列bfs解决走迷宫问题

题目

走迷宫。

一个迷宫如图所示,他有一个入口和一个出口,其中白色单元表示通路,黑色单元表示不通路。试寻找一条从入口到出口的路径,每一部只能从一个白色单元走到相邻的白色单元,直至出口。分别用栈和队列求解问题。

阅读更多