Skip to content

Instantly share code, notes, and snippets.

Avatar

Sam.Mo shuanghua

View GitHub Profile
@shuanghua
shuanghua / TextViewStringStyle.java
Created Aug 14, 2020
android 设置指定字符样式
View TextViewStringStyle.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String str1 = "你有${ccccc}财产需要领";
//String str1 = "${ccccc}你有财产需要领$";
//String str1 = "你有财产需要领${ccccc}";
View caddy2反代ss-libev.md

下载 caddy2

去 caddy2 官方 github 下载和 Linux 系统对应的可执行文件 https://github.com/caddyserver/caddy/releases 尽可能下载最新的版本,因为 bug 少,下载完成后并移动到 /usr/bin/ 下 (如果你有能力也可以下载源码进行编译安装)

Caddyfile 有两种配置写法

  • 第一种:
{
	experimental_http3
}
@shuanghua
shuanghua / debian-ufw.md
Created Jul 19, 2020
debian ufw 防火墙安装
View debian-ufw.md

安装 ufw

sudo apt install ufw
sudo ufw allow OpenSSH                         //让 ufw 允许 ssh 连接,避免后续连接不上 vps

如果SSH服务器 ssh 登录的端口不是 22 ,则还必须需要打开该端口。

@shuanghua
shuanghua / build.gradle.kts
Last active Jul 29, 2019
一份包含签名、DataBinding 等配置的 Android 项目 build.gradle.kts
View build.gradle.kts
import org.jetbrains.kotlin.konan.properties.Properties
import org.jetbrains.kotlin.konan.properties.loadProperties
plugins {
id("com.android.application")
kotlin("android")
kotlin("android.extensions")
kotlin("kapt")
id("androidx.navigation.safeargs.kotlin")
}
View Android隐藏键盘.kt
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
@shuanghua
shuanghua / ss-libev v2ray-plugin.md
Last active Sep 18, 2021
ss-libev + v2ray-plugin + tls
View ss-libev v2ray-plugin.md

ss-libev 插件 v2ray-plugin 的安装使用

请确保已经正确安装好了 ss-libev

购买域名 / 或申请免费域名

配置 Cloudflare

@shuanghua
shuanghua / IconView.kt
Created Mar 15, 2019 — forked from nickbutcher/IconView.kt
A prototype implementation of a shadow effect inspired by the Google Play Games app (https://play.google.com/store/apps/details?id=com.google.android.play.games).
View IconView.kt
/*
* Copyright 2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
View Android 获取系统状态栏高度
方式1:
var resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
//修改高度
return resources.getDimensionPixelSize(resourceId)
方式2:
myView.setOnApplyWindwoInsetListener{view,insets ->
val statusBarSize = insets.systemWindowInsetTop
return insets
}
@shuanghua
shuanghua / shr_next_button_state_list_anim.xm
Created Jun 29, 2018
Copy From Google MaterialComponents
View shr_next_button_state_list_anim.xm
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Pressed state -->
<item
android:state_enabled="true"
android:state_pressed="true">
<set>
<objectAnimator
@shuanghua
shuanghua / AndroidManifest.xml
Last active Aug 27, 2020
调用相机拍照
View AndroidManifest.xml
<application
<!--适配7.0+拍照返回 Start-->
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_path" />