WebView加载不出来图片的时候可以添加属性 webSettings.setDomStorageEnabled(true);
部分手机上WebView.goback()方法返回时onReceivedTitle方法接收不到标题,可以在onPageFinished()方法中设置标题,通过WebView.getTitle()。
private void setFullScreen(boolean enable) {
if (enable) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else {
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
}
eg: FirstActivity—>SecondActivity
在SecondActivity关闭的方法里 setResult(…)要在finish()和super.onBackPressed(…)方法之前执行。
注意:只有当前Activity被finish掉,结果才会被发送给上一个Activity的onActivityResult去处理。
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.alpha = 0.7f;
getWindow().setAttributes(layoutParams);
更改为ContextCompat.getColor(context, R.color.your_color);
ContextCompat在v4包中,所以低版本也可以用
Activity设置属性
android:windowSoftInputMode="stateAlwaysHidden"
Activity中添加代码
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)
inputMethodManager.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
Pattern pattern = Pattern.compile("\n");
String[] strs = pattern.split(str);
if (strs != null && strs.length > 0)
{
compareCodeList(strs[strs.length - 1]);
}
为了在横竖屏切换的时候不重新创建Activity,可以使用下面方式:
在AndroidManifest.xml文件中添加Activity属性为 android:configChanges=“orientation|keyboardHidden|screenSize”
重写onConfigureChanged()方法,系统在切换横竖屏时会调用此方法,而不是Activity的生命周期方法。
class HomeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra("reason");
if (reason != null) {
if (reason.equals("homekey")) {//短按home键
doSomething();
}else if(reason.equals("recentapps")){//长按home键
doSomething();
}
}
}
}
}
Activity中调用
HomeReceiver receiver = new HomeReceiver();
registerReceiver(receiver, new IntentFilter(
Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
unregisterReceiver(receiver);
private ScreenBroadcastReceiver mScreenReceiver;
private class ScreenBroadcastReceiver extends BroadcastReceiver {
private String action = null;
@Override
public void onReceive(Context context, Intent intent) {
action = intent.getAction();
if (Intent.ACTION_SCREEN_ON.equals(action)) {
// 开屏
} else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
// 锁屏
} else if (Intent.ACTION_USER_PRESENT.equals(action)) { // 解锁
}
}
}
private void startScreenBroadcastReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
context.registerReceiver(mScreenReceiver, filter);
}
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
params.leftMargin = (int) ((position+positionOffset)*position_one+(position_one-bottomLineWidth)/2);
bottomLine.setLayoutParams(params);
}
//position_one screenWidth/count(title个数)
//(position_one-bottomLineWidth)/2) bottomLine左边距
//params bottomLine的LayoutParams
问题原因:Fresco未初始化
解决方法:Fresco.initialize(MainActivity.this);
android应用根据包名区分唯一性,微信平台支付绑定一个包名,百度地图可以绑定两个(一个测试,一个正式),所以测试支付的话如果是不同的包名需要另外配置才可以测试。另外如果想在手机上同时安装测试版和正式版的话,设置不同的包名就可以了。
1.修改gradle文件和当前能运行的项目一致 根目录/gradle/wrapper/gradle-wrapper.properties
2.修改项目gradle文件的gradle版本
项目中用七牛云存储图片,获取到三个大小的图片(large,medium,small),其中只有large图片与原图一致,其余皆被裁减后返回,经查看是图片的设置出现了问题,后台通过七牛的imageView2接口获取图片资源,接口参数mode设置错误,修改后即可解决问题。
android:clipChildren属性控制Android的一个子view是否运行超越父控件边界放置,设置为false后那么当子控件的高度高于父控件时 也会完全显示,而不会被压缩。默认设置为true。
使用时在当前xml文件的根布局和需要控制的子控件的父控件处设置改属性。
实际使用时发现按照说明写好后未起作用,试过将父控件和根布局从RelativeLayout改为FrameLayout皆未起作用,另外加上了android:clipToPadding="false"属性亦未起作用,最后在stackoverflow上看到有建议将父控件的padding属性去掉,终于实现想要的效果。
另外发现子控件超出父控件的部分点击事件不起作用,不知道还有没有人遇到这个问题,如果有的话,希望可以交流一下。
刚开始出现了重复播放动画卡顿的问题,加上这句代码**rotation.setInterpolator(new LinearInterpolator());**代码后得以解决
ObjectAnimator rotation = ObjectAnimator.ofFloat(ivImg, "rotation", 0f, 360f);
rotation.setRepeatCount(ValueAnimator.INFINITE);
rotation.setInterpolator(new LinearInterpolator());
rotation.setDuration(1000);
rotation.start();
更新Mac系统后Android Studio报了这个错,解决办法如下所示:
Git 官网上重新下载一个最新的git软件,安装
Terminal中打which git查看git路径,复制git路径
在Android Studio设置上一步复制的git路径
over
###从Github上clone项目到Android Studio,ssh方式提示“git Could not read from remote repository”,https方式测试可以通过,iterm测试ssh方式可以通过。
解决方法:Android Studio–》Preferences–》Version Control–》Git–》SSH executable–》选择Native(默认Built-in)
###Java格式化字符串
####转换符
%s->“哈哈”
%d->3
%f->99.99(%.2f 保留两位小数)
%%->%
%n->换行符
“+”> %+d (为正数或者负数添加符号 eg:+99、-99)
“0”>%03d(数字前面补0 eg::007)
导入新项目编译时报了这个错,原因是Project.gradle classpath中的gradle版本不一致导致的,修改gradle版本与新建项目一致即可
网上推荐是用keytool工具来查看,但是运行后没有md5值,没有搜到解决办法,只好换了种方式。
在Android Studio中,在右侧找到菜单栏“Gradle”—>”:app”—>“Tasks”—>“android”—>双击“signReport”即可。这时在Terminal中可以查看debug版本、resalse版本的SHA1和MD5值。见截图