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_