乾物を開発する
8915 ワード
一:Android 15の一般的なグラフライブラリをお勧めします.線形、棒柱状、円グラフ、扇形、レーダー、株、折れ線、散点、計器盤...
https://blog.csdn.net/u014133119/article/details/80923327
HelloCharts:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1107/1930.html
二::Retrofit+RxJavaの依存:
//Okhttpライブラリ implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1' //Retrofitライブラリ implementation 'com.squareup.retrofit2:retrofit:2.1.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0' //RxJava implementation 'io.reactivex.rxjava2:rxjava:2.0.1' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
3: TextView/string.xmlコールドゲートテクニック:プレースホルダ%1$s、%1$dなどの使い方:
https://www.jianshu.com/p/e9fd92fd0951
四: EditTextには、ソフトキーボードをイジェクトしないカーソルがあります.
五:花火試験のドロップダウン効果:
Webサイト:https://github.com/Cleveroad/FireworkyPullToRefresh
六:【Androidコレクション】クールなオープンソース10個をお勧めします.
https://www.jianshu.com/p/d608f0228fd4
七:Android FlycoTabLayout:スライドラベル
八:浸透式を設定する:
StatusBarUtils:
使用方法:直接呼び出せばいい
eg:(0-250)透明度、0の場合は透明、UItilのargbを設定することでステータスバーの色を調整
九:各種コントロールサイト(完備)
https://hndeveloper.github.io/2017/github-android-ui.html#SwitchButton
十:Androidサードパーティのオープンソース(更新を続け、乾物がたくさんあります.好きなものを包んでください)
https://www.jianshu.com/p/f64df400e16f
十一:CollapsingToolbarLayout+FloatingActionButton美しい詳細インタフェースを構築(転送)
https://blog.csdn.net/smile_Running/article/details/97183522
https://blog.csdn.net/u014133119/article/details/80923327
HelloCharts:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1107/1930.html
二::Retrofit+RxJavaの依存:
//Okhttpライブラリ implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1' //Retrofitライブラリ implementation 'com.squareup.retrofit2:retrofit:2.1.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0' //RxJava implementation 'io.reactivex.rxjava2:rxjava:2.0.1' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
3: TextView/string.xmlコールドゲートテクニック:プレースホルダ%1$s、%1$dなどの使い方:
https://www.jianshu.com/p/e9fd92fd0951
四: EditTextには、ソフトキーボードをイジェクトしないカーソルがあります.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try {
Class cls = EditText.class;
Method setSoftInputShownOnFocus;
setSoftInputShownOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
setSoftInputShownOnFocus.setAccessible(true);
setSoftInputShownOnFocus.invoke(mEditText, false);
} catch (Exception e) {
e.printStackTrace();
}
五:花火試験のドロップダウン効果:
Webサイト:https://github.com/Cleveroad/FireworkyPullToRefresh
六:【Androidコレクション】クールなオープンソース10個をお勧めします.
https://www.jianshu.com/p/d608f0228fd4
七:Android FlycoTabLayout:スライドラベル
八:浸透式を設定する:
StatusBarUtils:
package com.project.charttext;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.ColorInt;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
/**
* @author
* @date 2019/5/15 13:44
*/
public class StatusBarUtils {
public static void setColor(Activity activity, @ColorInt int color, int statusBarAlpha){
//
setFullScreen(activity);
// view
addStatusBarBehind(activity,color,statusBarAlpha);
}
/**
* ( view),
*/
public static void addStatusBarBehind(Activity activity, @ColorInt int color, int statusBarAlpha) {
// windowphone decorView
ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
int count = decorView.getChildCount();
// statusBarView
if (count > 0 && decorView.getChildAt(count - 1) instanceof StatusBarView) {
decorView.getChildAt(count - 1).setBackgroundColor(calculateStatusColor(color, statusBarAlpha));
} else {
// view
StatusBarView statusView = createStatusBarView(activity, color, statusBarAlpha);
decorView.addView(statusView);
}
setRootView(activity);
}
public static void setTranslucentImageHeader(Activity activity, int alpha,View needOffsetView){
setFullScreen(activity);
// windowphone decorView
ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
int count = decorView.getChildCount();
// statusBarView
if (count > 0 && decorView.getChildAt(count - 1) instanceof StatusBarView) {
decorView.getChildAt(count - 1).setBackgroundColor(Color.argb(alpha, 0, 0, 0));
} else {
// view
StatusBarView statusView = createTranslucentStatusBarView(activity, alpha);
decorView.addView(statusView);
}
if (needOffsetView != null) {
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) needOffsetView.getLayoutParams();
layoutParams.setMargins(0, getStatusBarHeight(activity), 0, 0);
}
}
private static StatusBarView createTranslucentStatusBarView(Activity activity, int alpha) {
//
StatusBarView statusBarView = new StatusBarView(activity);
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity));
statusBarView.setLayoutParams(params);
statusBarView.setBackgroundColor(Color.argb(alpha, 0, 0, 0));
return statusBarView;
}
/**
*
*/
private static void setRootView(Activity activity) {
ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
//rootview
ViewCompat.setFitsSystemWindows(rootView,true);
rootView.setClipToPadding(true);
}
private static StatusBarView createStatusBarView(Activity activity, int color, int alpha) {
//
StatusBarView statusBarView = new StatusBarView(activity);
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity));
statusBarView.setLayoutParams(params);
statusBarView.setBackgroundColor(calculateStatusColor(color, alpha));
return statusBarView;
}
/**
*
*
* @param context context
* @return
*/
private static int getStatusBarHeight(Context context) {
//
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
return context.getResources().getDimensionPixelSize(resourceId);
}
/**
*
*
* @param color color
* @param alpha alpha
* @return
*/
private static int calculateStatusColor(int color, int alpha) {
float a = 1 - alpha / 255f;
int red = color >> 16 & 0xff;
int green = color >> 8 & 0xff;
int blue = color & 0xff;
red = (int) (red * a + 0.5);
green = (int) (green * a + 0.5);
blue = (int) (blue * a + 0.5);
return 0xff << 24 | red << 16 | green << 8 | blue;
}
public static void setFullScreen(Activity activity){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}else
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// , ContentView
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
public static class StatusBarView extends View {
public StatusBarView(Context context) {
super(context);
}
public StatusBarView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public StatusBarView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
}
使用方法:直接呼び出せばいい
eg:(0-250)透明度、0の場合は透明、UItilのargbを設定することでステータスバーの色を調整
StatusBarUtils.setTranslucentImageHeader(this,250,view);
九:各種コントロールサイト(完備)
https://hndeveloper.github.io/2017/github-android-ui.html#SwitchButton
十:Androidサードパーティのオープンソース(更新を続け、乾物がたくさんあります.好きなものを包んでください)
https://www.jianshu.com/p/f64df400e16f
十一:CollapsingToolbarLayout+FloatingActionButton美しい詳細インタフェースを構築(転送)
https://blog.csdn.net/smile_Running/article/details/97183522