當前位置: 首頁>>代碼示例>>Java>>正文


Java ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE屬性代碼示例

本文整理匯總了Java中android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE屬性的典型用法代碼示例。如果您正苦於以下問題:Java ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE屬性的具體用法?Java ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE怎麽用?Java ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在android.content.pm.ActivityInfo的用法示例。


在下文中一共展示了ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: perform

@Override
public void perform(UiController uiController, View view) {
    uiController.loopMainThreadUntilIdle();
    int orientation = getActivityOrientation(view);
    boolean checkOrientation = false;
    switch (orientationType) {
        case PORTRAIT:
            checkOrientation = orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT;
            break;

        case LANDSCAPE:
            checkOrientation = orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE;
            break;
    }

    if (checkOrientation) {
        isOrientation[0] = true;
    }
}
 
開發者ID:dev-labs-bg,項目名稱:fullscreen-video-view,代碼行數:25,代碼來源:CustomChecks.java

示例2: getCurrentOrientation

private int getCurrentOrientation() {
	int rotation = getWindowManager().getDefaultDisplay().getRotation();
	if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
		switch (rotation) {
		case Surface.ROTATION_0:
		case Surface.ROTATION_90:
			return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
		default:
			return ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
		}
	} else {
		switch (rotation) {
		case Surface.ROTATION_0:
		case Surface.ROTATION_270:
			return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
		default:
			return ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
		}
	}
}
 
開發者ID:amap-demo,項目名稱:weex-3d-map,代碼行數:20,代碼來源:CaptureActivity.java

示例3: getCurrentOrientation

private int getCurrentOrientation() {
    int rotation = getWindowManager().getDefaultDisplay().getRotation();
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        switch (rotation) {
            case Surface.ROTATION_0:
            case Surface.ROTATION_90:
                return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            default:
                return ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
        }
    } else {
        switch (rotation) {
            case Surface.ROTATION_0:
            case Surface.ROTATION_270:
                return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            default:
                return ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
        }
    }
}
 
開發者ID:xiong-it,項目名稱:ZXingAndroidExt,代碼行數:20,代碼來源:QrCodeScannerActivity.java

示例4: lockOrientation

public static void lockOrientation(@NonNull AppCompatActivity appCompatActivity) {
    int orientation;
    switch (getRotationState(appCompatActivity)) {
        case PORTRAIT:
            orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            break;
        case LANDSCAPE:
            orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            break;
        case REVERSE_PORTRAIT:
            orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
            break;
        case REVERSE_LANDSCAPE:
            orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            break;
        default:
            orientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
    }
    appCompatActivity.setRequestedOrientation(orientation);
}
 
開發者ID:GrenderG,項目名稱:Protestr,代碼行數:20,代碼來源:RotationUtils.java

示例5: lockOrientation

/**
 * Locks the device window in actual screen mode
 */
public static void lockOrientation(Activity activity) {
    Display display = ((WindowManager) activity.
            getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int rotation = display.getRotation();
    int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

    switch (activity.getResources().getConfiguration().orientation) {
        case Configuration.ORIENTATION_LANDSCAPE:
            if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            else
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            break;
        case Configuration.ORIENTATION_PORTRAIT:
            if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270)
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            else
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
    }
    //noinspection ResourceType
    activity.setRequestedOrientation(orientation);
}
 
開發者ID:davideas,項目名稱:AndroidBlueprints,代碼行數:25,代碼來源:Utils.java

示例6: mapConfigurationOriActivityInfoOri

private int mapConfigurationOriActivityInfoOri(int configOri) {
    final Display d = getWindowManager().getDefaultDisplay();
    int naturalOri = Configuration.ORIENTATION_LANDSCAPE;
    switch (d.getRotation()) {
    case Surface.ROTATION_0:
    case Surface.ROTATION_180:
        // We are currently in the same basic orientation as the natural orientation
        naturalOri = configOri;
        break;
    case Surface.ROTATION_90:
    case Surface.ROTATION_270:
        // We are currently in the other basic orientation to the natural orientation
        naturalOri = (configOri == Configuration.ORIENTATION_LANDSCAPE) ?
                Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE;
        break;
    }

    int[] oriMap = {
            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
            ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
            ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT,
            ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
    };
    // Since the map starts at portrait, we need to offset if this device's natural orientation
    // is landscape.
    int indexOffset = 0;
    if (naturalOri == Configuration.ORIENTATION_LANDSCAPE) {
        indexOffset = 1;
    }
    return oriMap[(d.getRotation() + indexOffset) % 4];
}
 
開發者ID:TeamBrainStorm,項目名稱:SimpleUILauncher,代碼行數:31,代碼來源:Launcher.java

示例7: convert2Orientation

private int convert2Orientation(int rotation){
    int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
    if (((rotation >= 0) && (rotation <= 45)) || (rotation > 315)) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
    } else if ((rotation > 45) && (rotation <= 135)) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
    } else if ((rotation > 135) && (rotation <= 225)) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
    } else if ((rotation > 225) && (rotation <= 315)) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
    } else {
        orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
    }
    return orientation;
}
 
開發者ID:SavorGit,項目名稱:Hotspot-master-devp,代碼行數:15,代碼來源:ScreenOrientationUtil.java

示例8: onSwitchPageType

@Override
        public void onSwitchPageType() {    //切換屏幕
            if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE||getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                mSuperVideoPlayer.setPageType(MediaController.PageType.SHRINK);
//                mRightLandscape.setVisibility(View.GONE);
//                mCutScreenBtn.setVisibility(View.GONE);
            } else {    //切換為橫屏
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                mSuperVideoPlayer.setPageType(MediaController.PageType.EXPAND);
//                mRightLandscape.setVisibility(View.VISIBLE);
//                mCutScreenBtn.setVisibility(View.VISIBLE);
            }

        }
 
開發者ID:SavorGit,項目名稱:Hotspot-master-devp,代碼行數:15,代碼來源:VideoPlayVODNotHotelActivity.java

示例9: setLockRotation

private void setLockRotation(boolean avpLock) {
    Display display = getWindowManager().getDefaultDisplay();
    int rotation = display.getRotation();
    if (DBG) Log.d(TAG, "rotation status: " + rotation);

    boolean systemLock;
    try {
        systemLock = 1 != Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);
    } catch (SettingNotFoundException e) {
        systemLock = false;
    }

    if (DBG) Log.d(TAG, "avpLock: " + avpLock + " systemLock: " + systemLock);
    if (avpLock || systemLock) {
        int tmpOrientation = getResources().getConfiguration().orientation;
        int wantedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;

        if (tmpOrientation == Configuration.ORIENTATION_LANDSCAPE) {
            if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
                wantedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            else
                wantedOrientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            setRequestedOrientation(wantedOrientation);
        }
        else if (tmpOrientation == Configuration.ORIENTATION_PORTRAIT || tmpOrientation == Configuration.ORIENTATION_UNDEFINED) {
            if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
                wantedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            else
                wantedOrientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            setRequestedOrientation(wantedOrientation);
        }
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    }
}
 
開發者ID:archos-sa,項目名稱:aos-Video,代碼行數:35,代碼來源:PlayerActivity.java

示例10: getOffset

/**
 * Gives the given offset for a given activity orientation. Used to make sure the views
 * are oriented correctly in respect to the activity orientation.
 *
 * @return the offset view orientation for the given activity orientation.
 */
private int getOffset() {
    switch (mOrientation) {
        case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
            return 0;
        case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
            return -90;
        case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
            return 180;
        case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
            return 90;
    }
    return 0;
}
 
開發者ID:brandenfung,項目名稱:GyroView,代碼行數:19,代碼來源:GyroViewListener.java

示例11: getScreenOrientation

private int getScreenOrientation() {
    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
    DisplayMetrics dm = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
    int width = dm.widthPixels;
    int height = dm.heightPixels;
    int orientation;
    // if the device's natural orientation is portrait:
    if ((rotation == Surface.ROTATION_0
            || rotation == Surface.ROTATION_180) && height > width ||
            (rotation == Surface.ROTATION_90
                    || rotation == Surface.ROTATION_270) && width > height) {
        switch (rotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_180:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            case Surface.ROTATION_270:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
        }
    }
    // if the device's natural orientation is landscape or if the device
    // is square:
    else {
        switch (rotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_180:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            case Surface.ROTATION_270:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
        }
    }

    return orientation;
}
 
開發者ID:WeDevelopTeam,項目名稱:HeroVideo-master,代碼行數:58,代碼來源:MediaPlayer.java

示例12: getScreenOrientation

/**
 * 獲取界麵方向
 */
public static int getScreenOrientation(Activity activity) {
    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
    DisplayMetrics dm = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
    int width = dm.widthPixels;
    int height = dm.heightPixels;
    int orientation;
    // if the device's natural orientation is portrait:
    if ((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) && height > width ||
            (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) && width > height) {
        switch (rotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_180:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            case Surface.ROTATION_270:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
        }
    }
    // if the device's natural orientation is landscape or if the device
    // is square:
    else {
        switch (rotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_180:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            case Surface.ROTATION_270:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
        }
    }

    return orientation;
}
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:55,代碼來源:WindowUtils.java

示例13: getScreenOrientation

private int getScreenOrientation() {
    if (activity == null) {
        return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
    }
    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
    DisplayMetrics dm = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
    int width = dm.widthPixels;
    int height = dm.heightPixels;
    int orientation;
    // if the device's natural orientation is portrait:
    if ((rotation == Surface.ROTATION_0
            || rotation == Surface.ROTATION_180) && height > width ||
            (rotation == Surface.ROTATION_90
                    || rotation == Surface.ROTATION_270) && width > height) {
        switch (rotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_180:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            case Surface.ROTATION_270:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
        }
    }
    // if the device's natural orientation is landscape or if the device
    // is square:
    else {
        switch (rotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_180:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            case Surface.ROTATION_270:
                orientation =
                        ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
        }
    }

    return orientation;
}
 
開發者ID:tcking,項目名稱:GiraffePlayer2,代碼行數:61,代碼來源:UIHelper.java

示例14: getScreenOrientation

private int getScreenOrientation() {
	int rotation = activity.getWindowManager().getDefaultDisplay()
			.getRotation();
	DisplayMetrics dm = new DisplayMetrics();
	activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
	int width = dm.widthPixels;
	int height = dm.heightPixels;
	int orientation;
	if ((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180)
			&& height > width
			|| (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270)
			&& width > height) {
		switch (rotation) {
		case Surface.ROTATION_0:
			orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
			break;
		case Surface.ROTATION_90:
			orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
			break;
		case Surface.ROTATION_180:
			orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
			break;
		case Surface.ROTATION_270:
			orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
			break;
		default:
			orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
			break;
		}
	} else {
		switch (rotation) {
		case Surface.ROTATION_0:
			orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
			break;
		case Surface.ROTATION_90:
			orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
			break;
		case Surface.ROTATION_180:
			orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
			break;
		case Surface.ROTATION_270:
			orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
			break;
		default:
			orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
			break;
		}
	}

	return orientation;
}
 
開發者ID:CoderCF,項目名稱:SuperVideoPlayer,代碼行數:51,代碼來源:SuperPlayer.java

示例15: setOrientationBis

/**
 * This can be overridden
 */
public void setOrientationBis(int w, int h, boolean resizable, String hint) 
{
  int orientation = -1;

  if (hint != "") {
     if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
     } else if (hint.contains("LandscapeRight")) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
     } else if (hint.contains("LandscapeLeft")) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
     } else if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
     } else if (hint.contains("Portrait")) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
     } else if (hint.contains("PortraitUpsideDown")) {
        orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
     }
  }

  /* no valid hint */
  if (orientation == -1) {
     if (resizable) {
        /* no fixed orientation */
     } else {
        if (w > h) {
           orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
        } else {
           orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
        }
     }
  }

  Log.v("SDL", "setOrientation() orientation=" + orientation + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint);
  if (orientation != -1) {
     mSingleton.setRequestedOrientation(orientation);
  }
 
  return;
}
 
開發者ID:suikki,項目名稱:simpleSDL,代碼行數:43,代碼來源:SDLActivity.java


注:本文中的android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE屬性示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。