- 執行jar包命令:
java -jar jar路徑
- StringBuffer和StringBuilder的區別
StringBuffer是線程同步的,而StringBuilder不是.所以StringBuilder執行速度更快.如果是在多線程中使用的話.就推薦使用StringBuffer.StackoverFlow - 動態添加View,控制View的Margin方法
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(30, 20, 30, 0);//這行代碼生效,這里要根據dp設置px,不然會有屏幕適配的問題
Button okButton=new Button(this);
okButton.setText("some text");
ll.addView(okButton, layoutParams);
- adb 打印出設置的長和寬
兩種方法:
adb shell dumpsys window | grep cur= |tr -s " " | cut -d " " -f 4|cut -d "=" -f 2
adb shell wm density
adb shell hm density
- 控制Button圓角
新建orange_corner_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/orange"/>
<corners android:radius="4dp"/>
</shape>
給button設置背景
android:background="@drawable/orange_corner_bg"
- 監聽CoordinatorLayout的滑動
if (appBarLayout != null) {
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
if (behavior != null) {
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
@Override
public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return behaviorDrag;
}
});
}
}
- CoordinatorLayout縮放
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
if (behavior != null) {
behavior.onNestedFling(coordinatorLayout, appBarLayout, null, 0, -params.height, true);
}