混合知识点

1.java

String path = String.format(Contants.NEWS_URL_HOST+Contants.NEWS_TOP_URL,pageIndex);

 将NEWS_URL_HOST+NEWS_TOP_URL组成的网址中d%的值替换为pageIndexandroid

2.OnScrollListener滑动监听中onScroll应设置一个标签返回给onScrollStateChanged用git

3.github

Runtime.getRuntime().maxMemory();

获得手机最大内存数据库

4.api

LruCache<String,Bitmap> cache = new LruCache<String, Bitmap>((int) (maxMemory/16)){ @Override protected int sizeOf(String key, Bitmap value) { return value.getByteCount()*value.getHeight();//返回一张图片的字节总数。
 } };

返回一张图片的字节总数。浏览器

5.安全

 getResources().getDisplayMetrics().widthPixels;

返回屏幕宽度服务器

6.并发

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { int left = (int) (scroll_line_width*(position+positionOffset));//下划线距离最左边的距离
        params.leftMargin = left; scroll_line.setLayoutParams(params); } @Override public void onPageSelected(int position) { int out_left = position*scroll_line_width +scroll_line_width/2 -                   getResources().getDisplayMetrics().widthPixels/2;//滑动条左边超出屏幕的距离
        scrollView.smoothScrollTo(out_left,0); } @Override public void onPageScrollStateChanged(int state) { } });

7.window

// 去掉标题栏(该代码必须在setContentView()前调用)
requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); window = getWindow(); // 去掉状态栏
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

 8.切换横竖屏时如何不销毁当前Activity

<activity android:name=".MainActivity" android:configChanges="orientation|screenSize">

 9.隐藏ActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

 10.动态设置布局宽和高

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,1); txVeiwHolder.imageView.setLayoutParams(params);

 或者

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); txVeiwHolder.imageView.setLayoutParams(params1);

 11.使应用程序变成对话框的形式

android :theme="@android:style/Theme.Dialog" 

 12.java代码调用string.xml中的文字可使用

getActivity().getString(R.string.ts0)

 可是调用颜色的话须要sdk23以上的版本

getActivity().getColor(R.color.colorBack)
getResources().getColor(R.color.my_blue)

 13.String s = new String("xyz");建立了几个String Object? 

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s 

14.viewpager每次切换的时候, 会从新建立当前界面及左右界面三个界面, 每次切换都要从新oncreate, 因此只要设置

viewPager setOffscreenPageLimit(3);

便可避免这个问题。
viewPager.setOffscreenPageLimit(3);表示三个界面之间来回切换都不会从新加载

15.fragment里嵌套viewpager,如何让viewpager滑到最后一页滑不动

viewPager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //让ViewPager的父容器不要拦截滑动事件
        viewPager.getParent().requestDisallowInterceptTouchEvent(true); //这里若是返回true则ViewPager的滑动事件会被屏蔽
        return false; } }); //给ListView添加头部,这行代码必定要写在listView.setAdapter(adapter);以前
listView.addHeaderView(headerView);

 16.将一个Activity设置成窗口样式

在AndroidManifest.xml中定义Activity的地方一句话

android:theme="@android:style/Theme.Dialog"

android:theme="@android:style/Theme.Translucent"//就变成半透明的

 17.后台的Activity如何在被系统回收以前保存当前状态?

onSaveInstanceState()

 18.android中service的实现方法是

startservice和bindservice

 19.TextView设置为指定的行数

android:lines="2" android:ellipsize="end"

20.登陆密码使用MD5加密

MD5.getMD5(old_password).toUpperCase()

 21.alertdialog没法弹出

切记:清单文件中app的风格必定要继承

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

22.代码中调用string.xml中的字符

在Activity中

getString(R.string.resource_name); 

或者

getResources().getString(R.string.resource_name); 

其余地方
用context上下文

context.getString(R.string.resource_name); 

context能够从调用的地方得到,或者 getApplicationContext 用全局的context 
或者用

application.getString(R.string.resource_name); 

 23.onActivityResult不执行的缘由

activity的启动模式不能为singleTask

 24.圆角按钮

效果图

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <stroke android:width="1dp" android:color="#FFFFFF"></stroke>
    <corners android:radius="3dp"></corners>
</shape>

25.刷新当前activity

调用oncreate()方法便可 

26.去除listview之间的分割线

android:divider="@null"

27.格式化时间

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dateStr = sdf.format(new Date());//最新的时间

 若是不想月和日前面自动补0,只要设置格式为yyyy-M-d便可

 28.

<activity android:name=".wxapi.WXEntryActivity" android:exported="true"/>
android:exported="true"的做用是设置其余应用能够调用该activity

 29.

自定义View中注册广播,须要重写onDetachFromWindow()方法去销毁广播

30.

若是不想控件被父布局遮挡,在根布局设置属性android:clipChildren="false"

31.

若是不想底部导航栏被软键盘顶起来,在清单文件设置 android:windowSoftInputMode="adjustPan"这个属性

32.

迭代开发的时候如何向前兼容新旧接口?

设计服务器接口时,都带版本号:例如1/二、当时间久了之后,旧版本就不维护了

33:

(后缀)逆波兰式

中缀表达式:9+(3-1)*3+10/2

后缀表达式:931-3*+10 2/+

34.

fragment嵌套问题

fragment嵌套里面不能用再用getActivity().getFragmentManager()
要用getChildFragmentManager()

35.

retrofit2的get和post
get:

例:

@GET("room/question_focus")
Call<BaseResponseEntity> followQuestion(@Query("topicId") String topicId, @Query("questionId") String questionId);

post:

例:

@FormUrlEncoded
@POST("room/question_answer")
Call<SendMessageResponseEntity> textAnswerQuestion(@Field("topicId") String topicId, @Field("questionId") String questionId, @Field("msgType") String msgType, @Field("answerChannel") String answerChannel, @Field("msg") String msg);

36.

res文件夹与assets文件夹有什么区别?

assets目录的做用是主要放置多媒体等数据文件

1) res文件夹中的资源在会在R.java文件中生成ID,代码中能够直接经过R.id的形式来访问。而assets文件夹中的资源不会在R.java文件中生成ID,须要经过AssetsManager经过IO流的方式来访问。

2) res文件夹中的文件会被压缩,而assets文件中的文件不会被压缩。

Res不能自定义目录名,不支持多层目录。而assets支持自定义目录名,支持多层目录

37.

Manifest.xml文件中主要包括哪些信息?

manifest:根节点,描述了package中全部的内容。
uses-permission:请求你的package正常运做所需赋予的安全许可。
permission: 声明了安全许可来限制哪些程序能你package中的组件和功能。
instrumentation:声明了用来测试此package或其余package指令组件的代码。
application:包含package中application级别组件声明的根节点。
activity:Activity是用来与用户交互的主要工具。
receiver:IntentReceiver能使的application得到数据的改变或者发生的操做,即便它当前不在运行。
service:Service是能在后台运行任意时间的组件。
provider:ContentProvider是用来管理持久化数据并发布给其余应用程序使用的组件。

38.

如何将SQLite数据库(dictionary.db文件)与apk文件一块儿发布?

能够将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。全部在res aw目录中的文件不会被压缩,这样能够直接提取该目录中的文件。能够将dictionary.db文件复制到res aw目录中

39.

如何将打开res aw目录中的数据库文件?

解答:在Android中不能直接打开res aw目录中的数据库文件,而须要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,而后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法得到res aw目录中资源的 InputStream对象,而后将该InputStream对象中的数据写入其余的目录中相应文件中。在Android SDK中可使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

40.

需求:将某一部分布局转化为图片

其实很简单,就几行代码

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());//建立一个DrawingCache的拷贝,由于DrawingCache获得的位图在禁用后会被回收
view.setDrawingCacheEnabled(false);//禁用DrawingCahce不然会影响性能

41.

焦点获取不到

android:descendantFocusability="blocksDescendants"

若是在xml布局的根布局中加这一句,会屏蔽整个Activity的焦点,禁用!

42.

fragment可见操做
需求:当fragment可见时执行某操做

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isInitedView && isVisibleToUser) {
//请求顶部信息
getChattingBanner();
}
}

43.

singleTask模式从新加载
需求:Activity1启动模式是singleTask,跳到Activity2,再跳转回Activity1,可是须要执行onCreate

/**
* Activity启动模式为非标准启动模式时继承该Activity。</br>
* 如SingleTask
*/
public abstract class BaseSingleTaskActivity extends BaseFragmentActivity {
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
initData();
initView();
}
} 

44.

as内存太小报错
报错

android studio开发时候 能经过编译 可是运行的时候就报错Error:Execution failed for task ':phoneapp:preDexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_05\bin\java.exe'' finished with non-zero exit value 1
解决方案

复制代码
解决步骤:
一、先把build.gradle中的

dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g" //这个改大
}

二、若是还不行,看看你的JDK是否是32位的,若是是则换成64位的,由于32位识别不了4G以上的内存

45.

今天测试找过来讲图片不显示了,查了一下是Picasso加载本地图片没有显示,奇怪了,之前都是这样写为何如今不行了,难道是Picasso有bug了,怀着激动的心情断点跟进去发现

Picasso全部load的重载都会将传入参数转化为Uri 再交给RequestCreator处理

而Picasso.load(localImagePath) 转化为Uri是没有 Scheme的 uri: "/storage/emulated/0/Android/data/xxxx/xxx.png"
这样固然没法解析图片了

解决方式:

Picasso.load(new File(localImagePath))
就能够了,File转化为Uri 是包含Scheme的,
uri: "file:///storage/emulated/0/Android/data/xxxxx/xxx.png"

解决。

46.

Android性能检测工具
网易Emmagee

Github地址:https://github.com/king1039/Emmagee

腾讯GT

Github地址:https://github.com/Tencent/GT

腾讯的APT

Github地址:https://github.com/shawwinbin/APT

Tencent CSDN地址:https://code.csdn.net/Tencent/apt/tree/master

科大讯飞的iTest

Github地址:https://github.com/BaiduQA/ITEST

Google的Battery Historian

Github地址:https://github.com/google/battery-historian

47.

数据更新版本号问题
App.getAppVsersionCode()

public static int getAppVsersionCode() {
try {
return getApplication().getPackageManager().getPackageInfo(getApplication().getPackageName(), 0).versionCode;
} catch (Exception e) {
if (null != e) {
LogHelp.e(getApplication().getPackageName(), e);
}
return 0;
}
}

48.

JsonView插件
下载地址:https://github.com/gildas-lormeau/JSONView-for-Chrome

解压,Google浏览器-更多工具-扩展程序-开发者模式-加载已解压的扩展程序

将WebContent打开加入便可

49.

在onBackPressed()中设置setResult时必定要写在super.onBackPressed()以前,即

@Override
public void onBackPressed() {
    setResult(RESULT_OK);
    super.onBackPressed();
}

由于若是super.onBackPressed在前面,源码里面会setResult(0);而后直接finish掉,你再怎么设置都不行了

50.

有的时候在清单文件里设置activity的启动模式不会生效,得动态java代码设置

相关文章
相关标签/搜索