- 浏览: 5819176 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
Android判断是Pad或者手机
到android设置中的卸载界面
清除手机Cookie:
CookieManager.getInstance().removeAllCookie();
向Handler发送Message方法:
mHandler.obtainMessage().sendToTarget();//没试过
mHandler.sendMessage(new Message());
自定义权限:
在应用One中定义并声明权限:
定义:
<permission
android:name = "com.focus.fishme.permission.READ"
android:label = "@string/permission_read"
android:description = "@string/permission_read_detail"
/>
声明:
<activity
android:name = ".ReadActivity"
android:permission = "com.focus.fishme.permission.READ"
/>
在应用Two中调用应用One中的ReadActivity。
使用:
<uses-permission android:name = "com.focus.fishme.permission.READ"/>
android:sharedUserId说明:
在Android中每个应用程序都会分配一个单独的用户空间,可以通过设置AndroidManifest.xml文件manifest标签的
android:sharedUserId属性指定相同的值,使多个APK运行在同一个用户空间中,在不同APK中共享数据库或配置信息。
获取屏幕上正在显示的Activity:
(1)ActivityManager mActivityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
(2)ComponentName mComponentName = mActivityManager.getRunningTasks(1).get(0).topActivity;
判断Activity是否在系统中存在:
Intent intent = new Intent();
intent.setClassName("包名", "类名");
if(intent.resolveActivity(getPackageManager()) == null) {
}
Android中获取位图的三种方法:
(1)InputStream mInputStream = getResources().openRawResource(R.drawable.图片名);
BitmapDrawable mBitmapDrawable = new BitmapDrawable(mInputStream);
Bitmap mBitmap = mBitmapDrawable.getBitmap();
(2)BitmapDrawable mBitmapDrawable = (BitmapDrawable)getResources().getDrawable(R.drawable.图片名);
Bitmap mBitmap = mBitmapDrawable.getBitmap();
(3)Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.图片名);
如何刷新View?
在UI线程中调用invalidate()方法,在非UI线程中调用postInvalidate()方法。
如何在一个apk中调用另外一个apk中的activity?
系统提供了很多可以直接调用的Activity,通过指定的Intent就可以调用,比如打开搜索的:
Intent.ACTION_WEB_SEARCH是一个字符串,是“搜索”这个Activity的标识,extra是传给这个activity的一些数据。发送出这个intent之后,系统根据action字符串Intent.ACTION_WEB_SEARCH知道了是要调用哪个activity,如果有重名,会弹出一个选择对话框。然后打开此activity,实现想要做的事情。
那么,我们自己怎么来实现呢。
首先,写一个activity,在AndroidManifest.xml里面的intent-filter中,给这个activity命名,
然后安装。安装完毕之后,你会发现,系统中找不到这个程序。别急,它确实安装在手机里面了,但是因为他不是main的,所以系统不会把他当做Application的入口程序。
而要想打开这个activity,只有知道它名字的人才可以。跟系统的intent一样使用。它的名字定义为"chroya.foo",所以,这里用这个字符串就可以调用它了:
用刚才举的那个系统的intent说明,它的activity里面使用getIntent().getBundleExtra(SearchManager.QUERY)来接收传递进来的搜索字符串参数。而这个SearchManager.QUERY是关键字。如果要自己实现这种功能,只需要定义好关键字,然后从BundleExtra中取就行了。
如何获取屏幕上正显示的activity?
用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。
那么,从里面我们可以发掘点什么出来吗?
仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。
getRunningTasks有个整型参数,表示返回列表的最大个数。那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。
至于这个能做什么,嘿嘿,我相信你知道的。
如何判断一个activity是否存在于系统中?
已知包名和类名,如何判断这个activity是否在系统中存在呢?很简单,通过intent就行。
如何让应用程序动态全屏和退出全屏?
让程序全屏的方法,大家都知道,那是静态的,程序运行之初就申明了。但是如果有这样的需求:要在程序运行的过程中,执行了某个操作而使之全屏,然后还需要退出全屏,怎么做?
如下:
修改window的LayoutParams参数,然后加上FLAG_LAYOUT_NO_LIMITS标志,就OK了。window会自动重新布局,呈现全屏的状态。
要退出全屏,只需要清除刚才加上的FLAG_FULLSCREEN参数,然后去掉FLAG_LAYOUT_NO_LIMITS标志。
如下:
如何获取状态栏和标题栏的高度?
1.获取状态栏高度:
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。于是,我们就可以算出状态栏的高度了。
2.获取标题栏高度:
getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。
如何将一个视窗(windows)盖在整个Application的最上面?
注意:
1. 要将window的类型配置成Type_toast。
2.G.appInstance 上下文需要使用Application的context.
如何判断快捷方式是否已经创建?
快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中
要有权限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
注意:2.2及其之后的版本不能用这个方法判断!(虽然在launcher.db数据库里还有favorites这个表)
如何在android的一个应用中调用另外一个应用?
如何获取程序版本号?
如何让Toast充满全屏?
如何更高效简单的实现界面中的分隔线?
如何发起或删除另一个程序?
如何监测是否静音?
如何设置控件的随机显示位置?
如何让软键盘显示/消失?
如何为Activity屏幕的标题栏添加图标?
要注意的是,win.setFeatureDrawableResource必须在setContentView之后,不然就没有效果。
如何设置桌面壁纸?
希望在你的程序中能设置桌面壁纸吗?很简单,首先我们需要取得设置壁纸的权限。和其它权限一样,只要在配置文件中加上以下配置信息即可。
<uses-permission android:name="android.permission.SET_WALLPAPER" />
然后在程序中调用如下代码即可设置桌面壁纸:
getApplicationContext().setWallpaper(bitmap)
如何在标题栏(titlebar)显示进度条?
如何去掉activity顶部的gradient?
<style name="Theme.Foo" parent="android:style/Theme.Light">
<item name="android:windowContentOverlay">@null</item>
</style>
<activity android:name=".FooActivity"
android:theme="@style/Theme.Foo"> ...
http://wang-peng1.iteye.com/blog/680015
如何让ScrollView强制滑到底部?
scroll.fullScroll(View.FOCUS_DOWN) 就可以了
如何ViewFlipper去掉多余空间?
ViewFlipper flipper = (ViewFlipper)findViewById(R.id.flipper);
flipper.setMeasureAllChildren(false);
如何去掉tabhost横线?
如何判断国家?
如何让屏幕保持一直亮?
http://wang-peng1.iteye.com/blog/769561
如何检查sim卡状态?
如何从SMS获取联系人信息?
如何在使用gallery在flinging拖动时候不出现选择的情况?
这时候需要注意使用
gallery.setCallbackDuringFling(false)
TabHost组件,怎么调整tab的高度?
如何模拟SDcard?
看图:
应该能看明白。
如何对View截屏?
对于自己的View实现一些绘图或子类化的技术时可以不用系统级这样的方法,我们可以通过
view.setDrawingCacheEnabled(true); //其中View是你需要截图的的View
Bitmap bm = view.getDrawingCache();
如何区别AsyncTask和Thread+Handler?
很多网友可能发现Android平台很多应用使用的都是AsyncTask,而并非Thread和Handler去更新UI,这里Android123给大家说下他们到底有什么区别,我们平时应该使用哪种解决方案。从Android 1.5开始系统将AsyncTask引入到android.os包中,过去在很早1.1和1.0 SDK时其实官方将其命名为UserTask,其内部是JDK 1.5开始新增的concurrent库,做过J2EE的网友可能明白并发库效率和强大性,比Java原始的Thread更灵活和强大,但对于轻量级的使用更为占用系统资源。Thread是Java早期为实现多线程而设计的,比较简单不支持concurrent中很多特性在同步和线程池类中需要自己去实现很多的东西,对于分布式应用来说更需要自己写调度代码,而为了Android UI的刷新Google引入了Handler和Looper机制,它们均基于消息实现,有事可能消息队列阻塞或其他原因无法准确的使用。
Android开发网推荐大家使用AsyncTask代替Thread+Handler的方式,不仅调用上更为简单,经过实测更可靠一些,Google在Browser中大量使用了异步任务作为处理耗时的I/O操作,比如下载文件、读写数据库等等,它们在本质上都离不开消息,但是AsyncTask相比Thread加Handler更为可靠,更易于维护,但AsyncTask缺点也是有的比如一旦线程开启即dobackground方法执行后无法给线程发送消息,仅能通过预先设置好的标记来控制逻辑,当然可以通过线程的挂起等待标志位的改变来通讯,对于某些应用Thread和Handler以及Looper可能更灵活。
如何使多个Drawable叠加(合成图片)?
大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:
上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。
public boolean isTabletDevice() { TelephonyManager telephony = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE); int type = telephony.getPhoneType(); if (type == TelephonyManager.PHONE_TYPE_NONE) { return true; } else { return false; } }
到android设置中的卸载界面
Uri uri = Uri.fromParts("package", appInfo.packageName, null); Intent it=new Intent(); it.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); it.setData(uri); startActivity(it);
清除手机Cookie:
CookieManager.getInstance().removeAllCookie();
向Handler发送Message方法:
mHandler.obtainMessage().sendToTarget();//没试过
mHandler.sendMessage(new Message());
自定义权限:
在应用One中定义并声明权限:
定义:
<permission
android:name = "com.focus.fishme.permission.READ"
android:label = "@string/permission_read"
android:description = "@string/permission_read_detail"
/>
声明:
<activity
android:name = ".ReadActivity"
android:permission = "com.focus.fishme.permission.READ"
/>
在应用Two中调用应用One中的ReadActivity。
使用:
<uses-permission android:name = "com.focus.fishme.permission.READ"/>
android:sharedUserId说明:
在Android中每个应用程序都会分配一个单独的用户空间,可以通过设置AndroidManifest.xml文件manifest标签的
android:sharedUserId属性指定相同的值,使多个APK运行在同一个用户空间中,在不同APK中共享数据库或配置信息。
获取屏幕上正在显示的Activity:
(1)ActivityManager mActivityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
(2)ComponentName mComponentName = mActivityManager.getRunningTasks(1).get(0).topActivity;
判断Activity是否在系统中存在:
Intent intent = new Intent();
intent.setClassName("包名", "类名");
if(intent.resolveActivity(getPackageManager()) == null) {
}
Android中获取位图的三种方法:
(1)InputStream mInputStream = getResources().openRawResource(R.drawable.图片名);
BitmapDrawable mBitmapDrawable = new BitmapDrawable(mInputStream);
Bitmap mBitmap = mBitmapDrawable.getBitmap();
(2)BitmapDrawable mBitmapDrawable = (BitmapDrawable)getResources().getDrawable(R.drawable.图片名);
Bitmap mBitmap = mBitmapDrawable.getBitmap();
(3)Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.图片名);
如何刷新View?
在UI线程中调用invalidate()方法,在非UI线程中调用postInvalidate()方法。
如何在一个apk中调用另外一个apk中的activity?
系统提供了很多可以直接调用的Activity,通过指定的Intent就可以调用,比如打开搜索的:
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY,"searchString") startActivity(intent);
Intent.ACTION_WEB_SEARCH是一个字符串,是“搜索”这个Activity的标识,extra是传给这个activity的一些数据。发送出这个intent之后,系统根据action字符串Intent.ACTION_WEB_SEARCH知道了是要调用哪个activity,如果有重名,会弹出一个选择对话框。然后打开此activity,实现想要做的事情。
那么,我们自己怎么来实现呢。
首先,写一个activity,在AndroidManifest.xml里面的intent-filter中,给这个activity命名,
<intent-filter> <action android:name="chroya.foo"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>
然后安装。安装完毕之后,你会发现,系统中找不到这个程序。别急,它确实安装在手机里面了,但是因为他不是main的,所以系统不会把他当做Application的入口程序。
而要想打开这个activity,只有知道它名字的人才可以。跟系统的intent一样使用。它的名字定义为"chroya.foo",所以,这里用这个字符串就可以调用它了:
Intent intent = new Intent("chroya.foo"); startActivity(intent);
用刚才举的那个系统的intent说明,它的activity里面使用getIntent().getBundleExtra(SearchManager.QUERY)来接收传递进来的搜索字符串参数。而这个SearchManager.QUERY是关键字。如果要自己实现这种功能,只需要定义好关键字,然后从BundleExtra中取就行了。
如何获取屏幕上正显示的activity?
用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。
那么,从里面我们可以发掘点什么出来吗?
仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。
getRunningTasks有个整型参数,表示返回列表的最大个数。那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0).topActivity; Log.d("", "pkg:"+cn.getPackageName()); Log.d("", "cls:"+cn.getClassName());
至于这个能做什么,嘿嘿,我相信你知道的。
如何判断一个activity是否存在于系统中?
已知包名和类名,如何判断这个activity是否在系统中存在呢?很简单,通过intent就行。
Intent intent = new Intent(); intent.setClassName("包名", "类名"); if(getPackageManager().resolveActivity(intent, 0) == null) { //说明系统中不存在这个activity }
如何让应用程序动态全屏和退出全屏?
让程序全屏的方法,大家都知道,那是静态的,程序运行之初就申明了。但是如果有这样的需求:要在程序运行的过程中,执行了某个操作而使之全屏,然后还需要退出全屏,怎么做?
如下:
WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
修改window的LayoutParams参数,然后加上FLAG_LAYOUT_NO_LIMITS标志,就OK了。window会自动重新布局,呈现全屏的状态。
要退出全屏,只需要清除刚才加上的FLAG_FULLSCREEN参数,然后去掉FLAG_LAYOUT_NO_LIMITS标志。
如下:
WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setAttributes(attrs); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
如何获取状态栏和标题栏的高度?
1.获取状态栏高度:
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。于是,我们就可以算出状态栏的高度了。
Rect frame = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top;
2.获取标题栏高度:
getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。
int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); //statusBarHeight是上面所求的状态栏的高度 int titleBarHeight = contentTop - statusBarHeight;
如何将一个视窗(windows)盖在整个Application的最上面?
private ImageView waitView; private final void showWaiting() { try { WindowManager.LayoutParams lp = null; lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_TOAST , WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, PixelFormat.TRANSLUCENT | WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW) ; WindowManager mWindowManager = (WindowManager) G.appInstance .getSystemService(Context.WINDOW_SERVICE); if (waitView == null) { LayoutInflater inflate = (LayoutInflater) G.appInstance .getSystemService(Context.LAYOUT_INFLATER_SERVICE); waitView = (ImageView) inflate.inflate(R.layout.waiting_layout, null); } mWindowManager.addView(waitView, lp); } catch (Throwable e) { } }
注意:
1. 要将window的类型配置成Type_toast。
2.G.appInstance 上下文需要使用Application的context.
如何判断快捷方式是否已经创建?
快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中
boolean isInstallShortcut = false ; final ContentResolver cr = context.getContentResolver(); final String AUTHORITY = "com.android.launcher.settings"; final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); Cursor c = cr.query(CONTENT_URI, new String[] {"title","iconResource" }, "title=?", new String[] {"XXX" }, null);//XXX表示应用名称。 if(c!=null && c.getCount()>0){ isInstallShortcut = true ; } /*try { while (c.moveToNext()) { String tmp = ""; tmp = c.getString(0); } } catch (Exception e) { } finally { c.close(); }*/ return isInstallShortcut ; }
要有权限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
注意:2.2及其之后的版本不能用这个方法判断!(虽然在launcher.db数据库里还有favorites这个表)
如何在android的一个应用中调用另外一个应用?
Intent intent = new Intent(); //第一个参数另一个应用的包名,第二个是需要启动的类 intent.setComponent(new ComponentName("com.Ex03_03","com.Ex03_03.Ex03_03")); startActivity(intent);
如何获取程序版本号?
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yourcompany.yourapp" android:versionCode="109" android:versionName="0.1.6.109 dev"> ... </manifest> public static int getVersionCode(Context context) { PackageManager pm = context.getPackageManager(); try { PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0); return pi.versionCode; } catch (NameNotFoundException ex) {} return 0; }
如何让Toast充满全屏?
Toast t = Toast.makeText(this, "Hello", Toast.LENGTH_SHORT); t.setGravity(Gravity.FILL_HORIZONTAL, 0, 0);
如何更高效简单的实现界面中的分隔线?
<View android:layout_width="fill_parent" android:layout_height="1px" android:background="?android:attr/listDivider" />
如何发起或删除另一个程序?
final Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); final ComponentName cn = new ComponentName("com.android.settings","com.android.settings.fuelgauge.PowerUsageSummary"); intent.setComponent(cn); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity( intent);
//ComponentName 两个参数一个是包名 一个是包下的主类 Uri uri = Uri.fromParts("package",“Your Package name here”, null); Intent deleteIntent = new Intent(Intent.ACTION_DELETE, uri); startActivity(deleteIntent);
如何监测是否静音?
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); switch (am.getRingerMode()) { case AudioManager.RINGER_MODE_SILENT: Log.i("MyApp","Silent mode"); break; case AudioManager.RINGER_MODE_VIBRATE: Log.i("MyApp","Vibrate mode"); break; case AudioManager.RINGER_MODE_NORMAL: Log.i("MyApp","Normal mode"); break; }
如何设置控件的随机显示位置?
RelativeLayout.LayoutParams parms=(RelativeLayout.LayoutParams)img.getLayoutParams(); parms.leftMargin = (int) (Math.random() * 320); parms.topMargin = (int) (Math.random() * 480); img.setLayoutParams(parms); img.invalidate();
如何让软键盘显示/消失?
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); View view = getCurrentFocus(); if (view != null){ // imm.showSoftInput(view, 0); //显示软键盘 imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); // imm.hideSoftInputFromWindow(view.getWindowToken(), 0);//隐藏软键盘 // InputMethodManager.HIDE_NOT_ALWAYS); }
如何为Activity屏幕的标题栏添加图标?
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Window win = getWindow(); win.requestFeature(Window.FEATURE_LEFT_ICON); setContentView(R.layout.mylayout); win.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.icon); }
要注意的是,win.setFeatureDrawableResource必须在setContentView之后,不然就没有效果。
如何设置桌面壁纸?
希望在你的程序中能设置桌面壁纸吗?很简单,首先我们需要取得设置壁纸的权限。和其它权限一样,只要在配置文件中加上以下配置信息即可。
<uses-permission android:name="android.permission.SET_WALLPAPER" />
然后在程序中调用如下代码即可设置桌面壁纸:
getApplicationContext().setWallpaper(bitmap)
如何在标题栏(titlebar)显示进度条?
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//先给Activity注册界面进度条功能 setContentView(R.layout.main); setProgressBarIndeterminateVisibility(true);//在需要显示进度条的时候调用这个方法 setProgressBarIndeterminateVisibility(false);//在不需要显示进度条的时候调用这个方法 }
如何去掉activity顶部的gradient?
<style name="Theme.Foo" parent="android:style/Theme.Light">
<item name="android:windowContentOverlay">@null</item>
</style>
<activity android:name=".FooActivity"
android:theme="@style/Theme.Foo"> ...
http://wang-peng1.iteye.com/blog/680015
如何让ScrollView强制滑到底部?
scroll.fullScroll(View.FOCUS_DOWN) 就可以了
如何ViewFlipper去掉多余空间?
ViewFlipper flipper = (ViewFlipper)findViewById(R.id.flipper);
flipper.setMeasureAllChildren(false);
如何去掉tabhost横线?
很简单 简单的有时候是因为我们太浮躁 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal"> <TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" > ... ... ... </TabHost> </LinearLayout> 外面加一层LinearLayout
如何判断国家?
String locale = context.getResources().getConfiguration().locale.getCountry(); String locale = context.getResources().getConfiguration().locale.getDisplayCountry(); TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String countryCode = tm.getSimCountryIso();
如何让屏幕保持一直亮?
@Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); }
http://wang-peng1.iteye.com/blog/769561
如何检查sim卡状态?
TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); int simState = telMgr.getSimState(); switch (simState) { case TelephonyManager.SIM_STATE_ABSENT: // do something break; case TelephonyManager.SIM_STATE_NETWORK_LOCKED: // do something break; case TelephonyManager.SIM_STATE_PIN_REQUIRED: // do something break; case TelephonyManager.SIM_STATE_PUK_REQUIRED: // do something break; case TelephonyManager.SIM_STATE_READY: // do something break; case TelephonyManager.SIM_STATE_UNKNOWN: // do something break; }
如何从SMS获取联系人信息?
ContactItem getContactByAddr(Context context, final SMSItem sms) { Uri personUri = Uri.withAppendedPath( ContactsContract.PhoneLookup.CONTENT_FILTER_URI, sms.mAddress); Cursor cur = context.getContentResolver().query(personUri, new String[] { PhoneLookup.DISPLAY_NAME }, null, null, null ); if( cur.moveToFirst() ) { int nameIdx = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME); ContactItem item = new ContactItem(); item.mName = cur.getString(nameIdx); cur.close(); return item; } return null; }
如何在使用gallery在flinging拖动时候不出现选择的情况?
这时候需要注意使用
gallery.setCallbackDuringFling(false)
TabHost组件,怎么调整tab的高度?
TabWidget tabWidget = mTabHost.getTabWidget(); int count = tabWidget.getChildCount(); for(int i = 0;i<count;i++){ View view = tabWidget.getChildTabViewAt(i);// tabWidget.getChildAt(i); view.getLayoutParams().height = 40; }
如何模拟SDcard?
看图:
应该能看明白。
如何对View截屏?
对于自己的View实现一些绘图或子类化的技术时可以不用系统级这样的方法,我们可以通过
view.setDrawingCacheEnabled(true); //其中View是你需要截图的的View
Bitmap bm = view.getDrawingCache();
如何区别AsyncTask和Thread+Handler?
很多网友可能发现Android平台很多应用使用的都是AsyncTask,而并非Thread和Handler去更新UI,这里Android123给大家说下他们到底有什么区别,我们平时应该使用哪种解决方案。从Android 1.5开始系统将AsyncTask引入到android.os包中,过去在很早1.1和1.0 SDK时其实官方将其命名为UserTask,其内部是JDK 1.5开始新增的concurrent库,做过J2EE的网友可能明白并发库效率和强大性,比Java原始的Thread更灵活和强大,但对于轻量级的使用更为占用系统资源。Thread是Java早期为实现多线程而设计的,比较简单不支持concurrent中很多特性在同步和线程池类中需要自己去实现很多的东西,对于分布式应用来说更需要自己写调度代码,而为了Android UI的刷新Google引入了Handler和Looper机制,它们均基于消息实现,有事可能消息队列阻塞或其他原因无法准确的使用。
Android开发网推荐大家使用AsyncTask代替Thread+Handler的方式,不仅调用上更为简单,经过实测更可靠一些,Google在Browser中大量使用了异步任务作为处理耗时的I/O操作,比如下载文件、读写数据库等等,它们在本质上都离不开消息,但是AsyncTask相比Thread加Handler更为可靠,更易于维护,但AsyncTask缺点也是有的比如一旦线程开启即dobackground方法执行后无法给线程发送消息,仅能通过预先设置好的标记来控制逻辑,当然可以通过线程的挂起等待标志位的改变来通讯,对于某些应用Thread和Handler以及Looper可能更灵活。
如何使多个Drawable叠加(合成图片)?
大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj); Drawable[] array = new Drawable[3]; array[0] = new PaintDrawable(Color.BLACK); //黑色 array[1] = new PaintDrawable(Color.WHITE); //白色 array[2] = new BitmapDrawable(bm); //位图资源 LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组 ld.setLayerInset(1, 1, 1, 1, 1); //第一个参数1代表数组的第二个元素,为白色 ld.setLayerInset(2, 2, 2, 2, 2); //第一个参数2代表数组的第三个元素,为位图资源 mImageView.setImageDrawable(ld);
上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。
发表评论
-
某些android手机获取不到IMEI问题
2018-08-21 14:17 7629某些山寨机可能拿不到IMEI 如果非要IMEI可以模拟一个 ... -
APK安装成功后点击"打开"再按Home键应用会重启的问题
2018-08-21 14:13 2767安装系统SD卡里面的apk或者原有的程序更新版本的时候, ... -
使用volley链接Https地址时报SSLHandshakeException
2018-08-21 14:06 2131在真实设备上出现以下错误 ︰ Volley error: ... -
PhotoView+Viewpager双指缩放的时候出现pointerIndex out of range问题
2017-07-10 14:30 4244PhotoView+Viewpager开发图集效果的时候,在某 ... -
Android6.0权限封装
2017-04-01 12:04 1570简介 Android6.0中对权限分为了一般权限和危险权限。 ... -
实现点击 WebView 中的图片,调用原生控件展示图片
2017-04-01 11:14 2809现在有很多时候,我们的 App 都进行了混合开发,而最简单,最 ... -
Android 方法引用数超过 65535 优雅解决
2017-03-31 09:37 1541随着应用不断迭代更新,业务线的扩展,应用越来越大(比如:集成了 ... -
android引用资源@与属性?备忘单
2017-03-30 10:09 1287几天前我偶然发现了我A ... -
ViewPager 与SwipeRefreshLayout,RecyclerView,ScrollView滑动冲突解决方法
2017-03-30 09:55 6564ViewPager 作为一个横向滚动的控件, 在 ViewGr ... -
Android中一些你可能没注意的小效果实现
2017-02-15 21:09 0http://www.see-source.com/blog/ ... -
Android热修复:Andfix和Hotfix,两种方案的比较与实现
2017-02-15 21:00 0http://www.see-source.com/blog/ ... -
Android 从网页中跳转到本地App
2017-01-11 09:27 1880我们在使用微信、QQ、京东等app的时候,会发现有时候通过他们 ... -
Activity的启动模式和onNewIntent
2016-12-28 09:10 1333一、启动模式介绍 启 ... -
android5.0使用Notification报RemoteServiceException的解决办法
2016-08-31 16:13 11545有时android5.0下使用Notification会报如下 ... -
RecyclerView 中的 item 如何居中问题
2016-05-18 09:52 12535一个很简单的Item布局,我只要让它由上而下排列,文字居中 ... -
sqlite3:not found 解决方法
2015-12-08 16:03 2554最最最重要,先root你的手机吧 sqlite3 为一个可 ... -
隐藏底部虚拟键NavigationBar实现全屏
2015-10-08 17:20 9852import android.app.Activity; ... -
服务端执行慢或网络延迟时,Volley多次发送请求的问题
2015-07-27 15:40 6996原文: Android Volley double post ... -
如何获取 Android 设备的CPU核数、时钟频率以及内存大小
2015-06-30 17:04 4380原帖: http://www.jianshu.com/p/f7 ... -
android点滴5
2015-04-10 17:32 2048一些小效果的实现 http://www.see-source. ...
相关推荐
"基于Android的记录点滴生活App设计与实现" 本文主要介绍了基于Android的记录点滴生活App的设计与实现,旨在帮助用户提高时间利用效率、满足用户日常社交、记录用户生活轨迹。该App的设计主要涉及到应用背景、实现...
在移动设备上,记事本应用是一种常见的工具,方便用户随时随地记录生活点滴或工作备忘。本文将深入探讨一个基于Android Studio开发的安卓记事本App,它包含了登录、注册、记事本列表、添加记事、修改记事等功能,...
这个APP的设计灵感来源于锤子便签,它提供了一个简洁而实用的界面,供用户记录生活中的点滴、工作上的待办事项或是任何需要记住的信息。源码的结构清晰,非常适合那些正在寻找毕业设计项目的同学,或者对Android应用...
在这个大作业中,我们看到的是一个基于Android Studio开发的简单记事本应用,它允许用户记录日常生活中的点滴,并进行保存。下面我们将深入探讨这个应用涉及到的关键知识点。 1. **Android应用基础**: - **...
总的来说,"点滴音乐播放器"是一款集本地音乐播放、播放模式选择和歌词同步显示于一体的Android应用,其背后的技术实现涵盖了多媒体处理、文件操作、用户界面设计等多个方面,充分体现了Android开发的多样性和复杂性...
【Android应用源码时光日志本】是一款专为Android平台设计的应用程序,旨在帮助用户用一句话轻松记录生活中的点滴时光。这款应用的核心功能是让用户每天用简洁的语言记录下自己的所思所感,形成一个时间线式的个人...
在Android平台上,开发一个记事本应用是一项常见的实践任务,它可以帮助用户记录日常生活中的点滴信息。这个"Android记事本的实现"项目是基于Android SDK的,利用了平台内置的SQLite数据库来存储用户的数据。接下来...
2. **旅游笔记**:用户可以在此记录旅行中的点滴,无论是行程规划、景点介绍还是体验感受,都可以随时保存,便于日后回忆或分享。 3. **实时天气**:集成天气API,为用户提供准确的当地及目的地天气预报,包括温度...
这款简单的笔记本App可能是为了方便用户记录日常生活、工作或学习中的点滴信息。 描述中提到“用android写的一个简单的笔记本app”,这意味着这个App可能具有基本的记事功能,如文本编辑、保存、查看等。开发者可能...
【标题】:“Android随手记”是一款专为Android平台设计的笔记应用,旨在提供便捷的记录功能,让用户随时随地捕捉生活中的点滴。源代码的开放性使得它成为初学者学习Android开发的良好资源。 【描述】:该项目提供...
其Android客户端为用户提供了一个便捷的途径,通过手机随时随地分享生活点滴,关注他人动态。今天,我们将深入探讨“饭否Android客户端”的源码,以此来揭示其背后的开发原理和技术栈。 首先,源码是软件开发的核心...
在Android平台上,开发一款便签应用是常见的任务,它能够帮助用户快速记录日常生活中的点滴信息。本源代码分享的是一个Android便签应用的实现,旨在为开发者提供学习和参考的资源。下面我们将深入探讨Android便签...
3. **活动(Activity)与生命周期**:Activity是Android应用的基本单元,负责处理用户交互。理解Activity的生命周期,包括onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法的调用顺序和...
在开发“Android App_云随笔课程设计”项目时,我们面临的是构建一个移动应用程序,旨在帮助用户便捷地记录他们的日常生活、旅行体验、心情点滴以及学习笔记等。这个应用程序的关键特性在于其同步功能,它将用户的...
2. **社交媒体**:如微博、抖音,用户可以分享生活点滴,获取新闻资讯,与朋友互动。 3. **导航地图**:如高德地图、百度地图,提供精准的定位和路线规划,方便出行。 4. **办公套件**:如WPS Office,让用户在手机...
3、专家推荐模块,了解最新幼教知识,统计阅读时长,按时长奖励小红花。 4、家庭分享模块,分享宝宝成长点滴,每分享一次奖励5朵小红花。 5、奖励兑换模块。 ———————————————— 版权声明:本文为CSDN...
3. **活动(Activity)管理**:在Android中,活动是用户界面的入口点,每个屏幕对应一个活动。在这个应用中,可能有一个主活动负责显示记录列表,另一个活动用于新建或编辑记录。 4. **数据存储**:考虑到随手记...
《Android日记本(上线版)》是一款专为Android平台设计的日记应用,旨在提供便捷、个性化的记录方式,让用户能够随时随地记录生活中的点滴。这款应用的第二版已经正式上线,并在指定网址...
在Android平台上,开发一款日记本应用是一个常见的实践项目,它能帮助用户记录日常生活中的点滴,同时为初学者提供了一个理解Android应用开发的良好起点。这款"android 日记本"源代码正是这样一个实例,它包含了基本...
在Android平台上,开发一款便签应用是一个常见的项目,它能够帮助用户快速记录日常生活中的点滴信息。这个名为"Android便签作品"的项目包含了基础的便签功能和安全性的设置,如密码保护,使得用户的数据更加私密。接...