Android开发中的一些边缘技巧

本文介绍如何在 Android 应用中实现软键盘的显示与隐藏、虚拟按键的隐藏及弱化显示、屏幕常亮的设置、获取设备尺寸、屏幕分辨率及 DPI,并提供了检查网络连接状态的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隐藏软键盘:

EditText myEditText = new EditText(this);

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

自定义全屏主题:
<style name="AppTheme.Fullscreen">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
隐藏虚拟按键:
VideoView myVideoView = new VideoView(this);
myVideoView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
弱化虚拟按键:
SurfaceView mySurfaceView = new SurfaceView(this);
mySurfaceView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
开启与关闭屏幕常亮:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
确定设备的尺寸:
switch (getResources().getConfiguration().screenLayout &
        Configuration.SCREENLAYOUT_SIZE_MASK) {
    case Configuration.SCREENLAYOUT_SIZE_XLARGE:
        break;
    case Configuration.SCREENLAYOUT_SIZE_LARGE:
        break;
    case Configuration.SCREENLAYOUT_SIZE_NORMAL:
        break;
    case Configuration.SCREENLAYOUT_SIZE_SMALL:
        break;
    default:
}
获取屏幕的宽度与高度:
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
int screenWidth = size.x;
int screenHeight = size.y;
获取设备的DPI:
int density = getResources().getDisplayMetrics().densityDpi;
if (density > DisplayMetrics.DENSITY_XXXHIGH) {
    
} else if (density > DisplayMetrics.DENSITY_XXHIGH) {

} else if (density > DisplayMetrics.DENSITY_XHIGH) {

} else if (density > DisplayMetrics.DENSITY_HIGH) {

} else if (density > DisplayMetrics.DENSITY_MEDIUM) {

} else if (density > DisplayMetrics.DENSITY_LOW) {

}
检查网络连接的静态方法:
public static boolean isConnectedToNetwork(Context context) {
    boolean isConnected = false;
    ConnectivityManager manager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (manager != null) {
        NetworkInfo networkInfo = manager.getActiveNetworkInfo();
        if (networkInfo != null) {
            isConnected = networkInfo.isConnected();
        }
    }
    return isConnected;
}
检查当前线程是否为UI线程:
if (Looper.myLooper() == Looper.getMainLooper()) {
    // UI线程
} else {
    // 其它线程
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值