BaseActivity 打开新的activity 新的activityForResult dip、px互换 toast打印 sp为字体大小单位时设置字体不随系统变化而变化封装类
2016-08-27 11:00
561 查看
BaseActivity
我们在activity中经常打开新的activity(openActivity)我们打开新的activityForResult(openActivityForResult)
我们需要的dip、px互换(dip2px、px2dip)
我们需要toast打印(showToastSafe)
部分需要,在使用sp为字体大小单位时设置字体不随系统变化而变化(重写getResources方法)
public class BaseActivity extends InitActivity {
/** UI 线程ID */
private long mUIThreadId;
protected LoveApplication app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = (LoveApplication) getApplication();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
* 通过类名启动Activity
*
* @param pClass
*/
protected void openActivity(Class<?> pClass) {
openActivity(pClass, null);
}
protected void openActivity(Class<?> pClass, String key, String value) {
Intent intent = new Intent(this, pClass);
intent.putExtra(key, value);
startActivity(intent);
}
/**
* 通过类名启动Activity,并且含有Bundle数据
*
* @param pClass
* @param pBundle
*/
protected void openActivity(Class<?> pClass, Bundle pBundle) {
Intent intent = new Intent(this, pClass);
if (pBundle != null) {
intent.putExtras(pBundle);
}
startActivity(intent);
}
public void openActivityForResult(Class<?> pClass, String key, String value, int requestCode) {
Intent intent = new Intent(this, pClass);
intent.putExtra(key, value);
openActivityForResult(pClass, null, requestCode);
}
public void openActivityForResult(Class<?> pClass, int requestCode) {
openActivityForResult(pClass, null, requestCode);
}
protected void openActivityForResult(Class<?> pClass, Bundle pBundle, int pRrequestCode) {
Intent intent = new Intent(this, pClass);
if (pBundle != null) {
intent.putExtras(pBundle);
}
startActivityForResult(intent, pRrequestCode);
}
/** dip转换px */
public int dip2px(int dip) {
final float scale = getResources().getDisplayMetrics().density;
return (int) (dip * scale + 0.5f);
}
/** pxz转换dip */
public int px2dip(int px) {
final float scale = getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}
/** 对toast的简易封装。线程安全,可以在非UI线程调用。 */
public void showToastSafe(final int resId, final int duration) {
if (Process.myTid() == mUIThreadId) {
// 调用在UI线程
Toast.makeText(getBaseContext(), resId, duration).show();
} else {
// 调用在非UI线程
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), resId, duration).show();
}
});
}
}
/** 对toast的简易封装。线程安全,可以在非UI线程调用。 */
public void showToastSafe(final CharSequence text, final int duration) {
if (Process.myTid() == mUIThreadId) {
// 调用在UI线程
Toast.makeText(getBaseContext(), text, duration).show();
} else {
// 调用在非UI线程
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), text, duration).show();
}
});
}
}
/*
* 设置字体不随系统变化而变化
*/
@Override
public Resources getResources() {
Resources res = super.getResources();
Configuration config=new Configuration();
config.setToDefaults();
if(res != null){
res.updateConfiguration(config,res.getDisplayMetrics() );
}
return res;
}
}
相关文章推荐
- 设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?
- 设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?
- android应用开发之View的大小计量单位(px、dpi、dp、dip、sp)
- 分享:Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- [Android] 字体使用dp单位避免设置系统字体大小对排版的影响
- android开发中使用sp为字体单位,调整系统字体大小后影响布局的解决方案
- Android设置App字体不跟随系统字体大小变化
- Android中设置APP应用字体不缩放,文字不随系统字体大小变化
- Android 尺寸大小单位px和dip ,sp之间的互相转换
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- 设计师给了px显着的单位,Android要设置多少开发商dip、dp、sp?
- Android中设置APP应用字体不缩放,文字不随系统字体大小变化
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- [Android] 字体使用dp单位避免设置系统字体大小对排版的影响
- Android textView 动态设置代码字号大小,支持单位选项 dp,sp or px
- android应用开发之View的大小计量单位(px、dpi、dp、dip、sp)
- Android中sp使用问题及字体大小跟随系统设置
- 在java代码中设置字体大小,可以指定单位为sp
- Android textView 动态设置代码字号大小,支持单位选项 dp,sp or px