Android常用功能
2、listview添加了一张图片作为背景,在滑动列表时背景就不见了,如何解决? ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919, 要改变这种情况,只需要调用listView的setCacheColorHint(0),颜色值设置为0 或者xml文件中listView的属性Android:cacheColorHint="#00000000"即可, 滚动时,重绘View的时候就不会有背景颜色。 android:listSelector="#00000000" 进行上面的设置之后,ListView点击item时就没有任何现象了, android:listSelector="@null"不可以实现。
android.os.NetworkOnMainThreadException 异常处理
在2.2的平台上运行不会报错,但是运行在高版本的平台上会报错, 通过查阅相关资料,发现,自从Android 2.3之后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。
StrictMode.setThreadPolicy(
new
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
// or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(
new
StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
//探测SQLite数据库操作
.penaltyLog()
//打印logcat
.penaltyDeath()
.build());
timer = new Timer( true );
timer.schedule(task, 1000 , 1000 ); // 延时1000ms后执行,1000ms执行一次 // timer.cancel(); // 退出计时器
TimerTask task = new TimerTask(){
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
这样 run函数就会被定时执行,
android在进入第一个activity之前会显示一个带有标题栏的空白界面然后再进入第一个activity?
解决办法:在manifest文件中的application标签下添加主题 android:theme="@android:style/Theme.Light.NoTitleBar",这样就不会显示标题栏了,虽然去掉了标题栏,但是还会有那个一闪而过的空白界面java.lang.IllegalStateException: TimerTask is scheduled already原因
将创建task和timer对象的代码都放在onstart函数中
再按一次退出程序代码
private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); } return true; } return super.onKeyDown(keyCode, event);}
android 动态添加控件
首先需要得到文件映射的对象 inflater = LayoutInflater.from(this); 调用映射方法 LinearLayout layout= (LinearLayout) inflater.inflate(R.layout.linearLayout_view, null);
得到布局后,既可以对布局中的控件进行修改又可以像布局中添加控件
android多线程绘图需要注意的问题 Canvas c=holder.lockCanvas(); 即得到一个canvas,如果是由主线程生成的子线程来执行该段代码,那么在主activity在stop状态时执行将会得不到canvas而抛异常
android图标常用颜色
android中资源在java代码中访问外部资源,例如layout、drawable、等 控件资源可以利用findViewById(R.id.viewName) 如果想得到一个字符串或者颜色的资源,需要利用 getResources().getColor(R.color.colorName);获取 为什么利用view.getHeight,view.getWidth获取的值是0,? 只有调用了控件的onDraw方法后,才能确定控件的宽高,可以在onCreate函数中添加下面的代码 ViewTreeObserver vto = surfaceView.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()
{
public boolean onPreDraw()
{
if (hasMeasured == false)
{
}
return true;
}
});
Android 中如何动态指定控件位置?
imageView.setPadding(ImageView.getPaddingLeft()+100, imageView.getPaddingTop(), imageView.getPaddingRight(), imageView.getPaddingBottom());}
这样就会将控件向左移动100pix,如果是ImageView控件可以将src属性设置为图片源,如果将background设置为图片源,那么设置内边距会有问题,因为背景设置为图片的画会导致控件随着设置的内边距自动扩展
该位置是针对父控件的来指定内边距的
获取手机系统的信息
"Product: " + android.os.Build.PRODUCT;
phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI;
phoneInfo += ", TAGS: " + android.os.Build.TAGS;
phoneInfo += ", VERSION_CODES.BASE: " + android.os.Build.VERSION_CODES.BASE;
phoneInfo += ", MODEL: " + android.os.Build.MODEL;
phoneInfo += ", SDK: " + android.os.Build.VERSION.SDK;
phoneInfo += ", VERSION.RELEASE: " + android.os.Build.VERSION.RELEASE;
phoneInfo += ", DEVICE: " + android.os.Build.DEVICE;
phoneInfo += ", DISPLAY: " + android.os.Build.DISPLAY;
phoneInfo += ", BRAND: " + android.os.Build.BRAND;
phoneInfo += ", BOARD: " + android.os.Build.BOARD;
phoneInfo += ", FINGERPRINT: " + android.os.Build.FINGERPRINT;
phoneInfo += ", ID: " + android.os.Build.ID;
phoneInfo += ", MANUFACTURER: " + android.os.Build.MANUFACTURER;
phoneInfo += ", USER: " + android.os.Build.USER;
如何读取raw中的文本文件
文件内容 xmppHost=10.0.0.204
xmppPort=5222
读取文件 props.load(this.getResources().openRawResource(R.raw.hello));
获得文件中的值 props.getProperty("xmppHost", "127.0.0.1");
props.getProperty("xmppPort", "5222");
android sharedPrefs用法
很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。
sharedPrefs最终是以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目录下。
整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,
下面代码实现向SharedPreferences中添加键值对,如果不存在则创建文件
SharedPreferences pre = getSharedPreferences("share", Context.MODE_PRIVATE);Editor editor = pre.edit();editor.putString("first", "one");editor.commit();获取存储的数据
SharedPreferences pre2 = getSharedPreferences("share", Context.MODE_PRIVATE);
String str = pre2.getString("first", "defaultValue");
如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个<packagename>为com.scl.action的应用使用下面语句创建了preference。
getSharedPreferences("test",Context.MODE_WORLD_READABLE);
其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :
ContextotherAppsContext= createPackageContext("com.scl.action",Context.CONTEXT_IGNORE_SECURITY);
SharedPreferencessharedPreferences= otherAppsContext.getSharedPreferences("test",Context.MODE_WORLD_READABLE);
Stringname = sharedPreferences.getString("username","");
intage = sharedPreferences.getInt("age",0);
如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile =new File(“/data/data/<package name>/shared_prefs/test.xml”);//<packagename>应替换成应用的包名
继承 Service 时,如果是耗时较长的操作,那么需要声明一个新的线程来执行,并且执行完后需要自己 stopService , 继承 IntentService 会自动生成一个新的线程,并且会创建一个与该线程绑定的任务队列,调用该service后会自动将 intent 放入任务队列,然后传递给 onHandlerIntent 方法,而 且一次只传一个 intent 给 onHandlerIntent 方法,并且会自动调用 stopService 方法,也不用担心多线程会造成的问题。 继承IntentService需要有构造函数
public HelloIntentService() { super("HelloIntentService"); }
更多相关文章
- android 控件绘制完成的监听
- Android中的访问权限
- Android(安卓)UI控件详解-AutoComplete-TextView(自动提示)
- Android中播放视频
- 关于Android(安卓)相对布局中的属性 的介绍和运用
- Android(安卓)CoordinatorLayout的使用——实现Toolbar的隐藏和
- Android(安卓)UI控件详解-SeekBar(拖动条)
- Android(安卓)UI控件详解-GridView(网格视图)
- android之布局xml各种控件属性详解