import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.util.DisplayMetrics; import android.view.Display; import android.view.Menu; import android.view.WindowManager; import android.widget.TextView; import java.util.List; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final PackageManager packageManager = this.getPackageManager(); final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); // mainIntent.setPackage(packageName); final List apps = packageManager.queryIntentActivities(mainIntent, 0); // 方法1 Android获得屏幕的宽和高 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); int screenWidth = screenWidth = display.getWidth(); int screenHeight = screenHeight = display.getHeight(); // 方法2 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); TextView tv = (TextView)this.findViewById(R.id.tv); float width=dm.widthPixels*dm.density; float height=dm.heightPixels*dm.density; tv.setText("First method:"+dm.toString()+"\n"+"Second method:"+"Y="+screenWidth+";X="+screenHeight); //dm.widthPixels,dm.heightPixels 这是自己项目中用的界面适配工具,通过获取当前设备的 分辨率 来做等比例缩放的工具。 下面是 两种 常用的地方与方式 1.BaseActivity方式,通过集成基类来对activity的界面做适配 package com.jiuma.projectbase; import android .app.Activity; import android .util.DisplayMetrics; import android . view . View ; import android . view . View Group.LayoutPa 我们在 Content Provider的insert,update,delete等改变之后调用getContext().get Content Resolver().notifyChange(uri, null );这样就通知那些监测databases变化的observer了,而你的observer可以在一个service里面注册。定义 Content Observer,并且在onChange里做你想做的事情... 在开发中,当横竖屏切换时,就会重新加载Activity,会造成一些错误,怎么样避免呢,就需要监听横竖屏切换,然后做处理 1.ConfigChanges,用于捕获手机状态的改变,当横竖屏切换,屏幕尺寸变化,弹出键盘,系统设置改变等条件,就会触发回调事件onConfigurationChanged。让Activity捕捉到该事件,需要做如下步骤: 声明Activity需要捕捉的事件类型,在manifest的配置: <activity android :name=".MainActivity" import android . content .BroadcastReceiver; import android . content .Context; import android . content .Intent; import android . content .IntentFilter; import android . andorid界面单位开发是应该是dip。不要出现决定坐标,和绝对的值。 自适应,包括元素大小自适应,和元素位置自适应。 1.关键点在于用dip,或者先判断特定手机的宽和高。总之一句话像素无关。 2.每个平台一套图片,一套尺寸。 元素大小: dip会自适应。 图片默认会自适应的。 自适应问题。一个公式 px=dip*(density/160);(density/160)在andro... 问题引出: 切换到横屏时有一个 view 要启动动画,但是获取的宽度为解决方案: view .get View TreeObserver().addOnGlobalLayoutListener(new View TreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 本文首发于此 博主:威威喵|博客主页:https://blog.csdn.net/smile_running 由于 Android 手机五花八门,手机厂商较多,所以导致的一个问题就是 屏幕分辨率 各有千秋,诸如:320*480、540*960、768*1280、1080*19... 从这张图中我们可以看出,所谓的刘海屏实际上是安装在状态栏的一块玻璃屏幕,刘海屏的高度等于状态栏的高度 如果我们的的app没有适配 android p的刘海屏,那么在显示的时候变会出现问题, 1)如没有状态栏,全屏显示的... public static class BrightnessObserver extends Content Observer{ private BrightnessChangeListener listener; private Activity mActivity; public BrightnessObserver(Activity activity,Handler handl 此 方法 比较万能,无需考虑上下文,网上看到有些人提供的 方法 都只能在Activity中使用,而在service或其他的环境中就不实用了,感觉自己的这个 方法 都适用,可以提取出来以便公共调用:/** * 得到屏幕的宽和高 */private void getWH() {WindowManager mageger=(WindowManager)getSystemService(Context.WINDOW_