1.
所以即使在源码里面可以使用setIcon函数,但是还是不会有效果的。。。
一般有下面三个步骤:
// 通常在onCreate函数中注册一个控件,btn为需要弹出ContextMenu的控件
this.registerForContextMenu(btn); 29. 30. 打印当前函数的系统调用堆栈 java.util.Map<Thread, StackTraceElement[]> ts = Thread.getAllStackTraces(); 31. 获取当前函数的函数名称 Thread.currentThread().getStackTrace()[2].getMethodName(); 32. 往手机发送一个按键消息,event号可能按手机而不一样,第一个1是表示按键事件,139是键值,后面的数值1表示down,0表示up adb shell sendevent /dev/input/event1 1 139 1 && adb shell sendevent /dev/input/event1 1 139 0 33. 指定使用finger layout,AndroidManifest.xml 34. 设置某activity只能有一个实例 <activity android:name=".TTSActivity" 35. 使用adb shell启动一个activity. -n 后面跟着的是包名/.需要启动的类名 adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.android.contacts/.DialtactsContactsEntryActivity -f 0x10200000 36. 37. java获取当前时间的字符串 SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
///////////////////////////////////////////////////////////////////////////////
// 下面函数是创建ContextMenu的,v是被点击的控件
// 根据v进行判断可以对不同的控件,创建不同的ContextMenu
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
///////////////////////////////////////////////////////////////////////////////
// 下面函数是响应ContextMenu点击事情的。。
public boolean onContextItemSelected(MenuItem item)
2.
Toast显示信息,可以方便的来输出信息
Toast.makeText(this, "Info", Toast.LENGTH_LONG).show();
3.
关于MENU的操作
有两个比较重要的了,函数原型:
public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title);
public abstract SubMenu addSubMenu (CharSequence title);
一般的函数有:
menu.setHeaderTitle("MenuTitle");
menu.setHeaderIcon(R.drawable.icon);
menu.add(0, 0, 0, "item0").setIcon(R.drawable.icon);
menu.add(0, 1, 1, "item1");
///////////////////////////////////////////////////////////////////////////////
SubMenu sub = menu.addSubMenu("SubMenu");
sub.add(0, 5, 5, "item5");
sub.add(0, 6, 6, "item6");
获取屏幕的分辨率
isplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
dm.widthPixels
dm.heightPixels
5.
显示POPUP对话框,类似于Windows的MessageBox函数,不过这个要比MessageBox强大多了,,,
可以设置单选或者多选项,以及其响应,有两种方法可以
一:
实现Activity的onCreateDialog函数。
showDialog(ID_TEST_DIALOG);
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch (id) {
case ID_TEST_DIALOG:
Dialog dialog = new AlertDialog.Builder(this)
.setTitle("AlertDialog Test")
.setMessage("This is a test for AlertDialg!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.create();
return dialog;
default:
break;
}
return super.onCreateDialog(id);
}
这里有个配套的函数
dismissDialog(D_TEST_DIALOG);
这个可以关闭相应的Dialog.
///////////////////////////////////////////////////////////////////////////////
二:
直接调用Builder函数去完成创建与显示。
new AlertDialog.Builder(this)
.setTitle("AlertDialog Test")
.setMessage("This is a test for AlertDialg!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.show();
6.
从一个xml布局获取其View的方法。
这个好像有两种方法,不过都是得到一个LayoutInflater之后再inflate得到指定xml布局相对应的View.
一:
LayoutInflater li;
li = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.la_test, null);
二:
LayoutInflater li;
li = LayoutInflater.from(this);
View v = li.inflate(R.layout.la_test, null);
7.
知道第二个方法和第六个方法之后,我们可以把这两个方法综合起来。
就是可以自定义的显示一段时间的图形,这个说法有点抽象,简单一点就是做一个类似音量调节那样的浮动窗口。
思路是这样的,可以新建一个Toast,然后再inflate一个布局,设置里面的内容,然后再把内容放到Toast里面显示
LayoutInflater li;
li = LayoutInflater.from(this);
View v = li.inflate(R.layout.la_test, null);
Toast toast = new Toast(this);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(v);
toast.show();
8.
当按返回键时,完全按退出系统
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
9.
获取状态栏和标题栏的高度
获取状态栏高度:
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。
于是,我们就可以算出状态栏的高度了。
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
获取标题栏高度:
getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。
int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight
10.
关于窗口的一些操作
不显示标题栏
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
或者是设置一个style属性,主题,加入下面的项
<item name="android:windowNoTitle">true</item>
设置背景半暗
LayoutParams lp = getWindow().getAttributes();
lp.dimAmount = 0.5f;
// 设置透明度是alpha的值
// lp.alpha = 0.8f;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
设置背景模糊
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
一般可能有用的style设置,以防以后忘记了,,,
<item name="android:windowBackground">@drawable/color_translucent</item>
<item name="android:windowIsTranslucent">true</item>
11.
获取SD卡总空间和可用空间
public static String getSDcardStorage() {
String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)) {
File sdcardDir = Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(sdcardDir.getPath());
long blockSize = sf.getBlockSize();
long blockCount = sf.getBlockCount();
long availCount = sf.getAvailableBlocks();
return "SD卡:" + formatSize(blockSize*blockCount)
+ " 可用空间:" + formatSize(availCount*blockCount);
}
return null;
}
获取系统空间和可用空间
public static String getSystemStorage() {
File root = Environment.getRootDirectory();
StatFs sf = new StatFs(root.getPath());
long blockSize = sf.getBlockSize();
long blockCount = sf.getBlockCount();
long availCount = sf.getAvailableBlocks();
return "总空间:" + formatSize(blockSize*blockCount)
+ " 可用空间:" + formatSize(availCount*blockSize);
}
在资源文件中使用Android定义的资源的方法
在Android系统中定义了很多动画与样式,我们可能在eclipse开发程序的时候使用系统定义的资源,
哈哈,这样可以保持与系统显示的样式一致~~~
对于定义为:android.R.drawable.status_bar_item_background的样式,
只需在eclipse的资源文件中写为:@android:drawable/status_bar_item_background
总结一下,所以可以写为下面的样子。。。
android:background="@android:drawable/status_bar_item_background"
13.
Android.mk文件的说明。
JAR: include $(BUILD_JAVA_LIBRARY),源文件为java
SO:include $(BUILD_SHARED_LIBRARY),源文件为 c或c++
APK:include $(BUILD_PACKAGE),源文件为java
二进制可执行文件:include $(BUILD_EXECUTABLE),源文件为c或c++
如需要在java文件中调用so文件,如:libabc.so则需在Android.mk文件中添加:
LOCAL_JNI_SHARED_LIBRARIES := libabc
同时,需要在java文件中System.loadLibrary("abc");,注意此时不需要在加上lib前缀
14.
模拟按键消息
private void sendVKeyDelay(int key) {
final int keyCode = key;
Thread sendKeyDelay = new Thread(){
public void run() {
try {
Thread.sleep(100);
long now = SystemClock.uptimeMillis();
KeyEvent keyDown = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
keyCode, 0);
IWindowManager wm = IWindowManager.Stub.asInterface(
ServiceManager.getService("window"));
wm.injectKeyEvent(keyDown, false);
KeyEvent keyUp = new KeyEvent(now, now, KeyEvent.ACTION_UP,
keyCode, 0);
wm.injectKeyEvent(keyUp, false);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
sendKeyDelay.start();
}
15.
使用startActivity应该注意的异常,处理各种情况跟异常!!!
void startActivitySafely(Intent intent) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
} catch (SecurityException e) {
Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
e(LOG_TAG, "Launcher does not have the permission to launch " + intent +
". Make sure to create a MAIN intent-filter for the corresponding activity " +
"or use the exported attribute for this activity.", e);
}
}
16.
创建动画效果。
public void createAnimation() {
if (mInAnimation == null) {
mInAnimation = new AnimationSet(false);
final AnimationSet ani = mInAnimation;
ani.setInterpolator(new AnticipateOvershootInterpolator(2.5f));
ani.addAnimation(new AlphaAnimation(0.0f, 1.0f));
ani.addAnimation(new TranslateAnimation(Animation.ABSOLUTE, 0.0f,
Animation.ABSOLUTE, 0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
Animation.RELATIVE_TO_SELF, 0.0f));
ani.setDuration(1000);
}
if (mOutAnimation == null) {
mOutAnimation = new AnimationSet(false);
AnimationSet ano = mOutAnimation;
ano.setInterpolator(new AnticipateOvershootInterpolator(2.5f));
ano.addAnimation(new AlphaAnimation(1.0f, 0.0f));
ano.addAnimation(new TranslateAnimation(Animation.ABSOLUTE, 0.0f,
Animation.ABSOLUTE, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f));
ano.setDuration(1000);
}
}
17.
显示一个浮动的窗口(任意View).
mWindowManager = (WindowManager)getSystemService(
Context.WINDOW_SERVICE);
mDialog = LayoutInflater.from(mContext).inflate(
R.layout.popup, null);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
(int)event.getX(), (int)event.getY(),
WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
lp.gravity = Gravity.TOP | Gravity.LEFT;
mWindowManager.addView(mDialog, lp);
如果需要隐藏,则remove即可
mWindowManager.removeView(mDialog);
18.
设置应用程序全屏显示
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
19.
获取系统所有的安装程序
final PackageManager packageManager = getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> apps = packageManager.queryIntentActivities(mainIntent, 0);
20.
手机振动,代码片段。
Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(pattern, -1);
需要在AndroidManifest.xml文件添加权限
<uses-permission android:name="android.permission.VIBRATE" />
21.
设置开机运行程序,需要在AndroidManifest.xml中添加
<intent-filter>
<!-- 系统启动完成后会调用-->
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
22.
简单的使用ListView的方法,
一,单行文字的
List<String> list = new ArrayList<String>();
lvData.setAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_1, list));
二,双行文字,使用SimpleAdapter
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("ID", cursor.getString(0));
map.put("UserName", cursor.getString(1));
list.add(map);
lvData.setAdapter(new SimpleAdapter(this, list,
android.R.layout.simple_expandable_list_item_2,
new String[]{"ID","UserName"},
new int[]{android.R.id.text1, android.R.id.text2}));
23.
SQLiteDatabase中模拟使用Truncate方法清空数据表跟计数器的方法
先使用"DELETE FROM TableName"语句清空数据表数据
再使用"UPDATE SQLITE_SEQUENCE SET SEQ=0 WHERE NAME=\"TableName\""置0计数器
下面是清空表“Users”
try {
mDatabase.execSQL("DELETE FROM Users");
mDatabase.execSQL("update sqlite_sequence set seq=0 where name=\"Users\"");
} catch (SQLException se) {
Toast.makeText(this, se.getMessage(), Toast.LENGTH_LONG).show();
se.printStackTrace();
}
24.
使用ADB以可读写方式重新挂载根目录,可以读写sbin文件夹
./adb shell
su
mount -o remount,rw dev/block/mtdblock3 /
25.
android中通过代码实现文件权限修改
try {
String command = "chmod 777 " + destFile.getAbsolutePath();
Log.i("zyl", "command = " + command);
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command);
} catch (IOException e) {
Log.i("zyl","chmod fail!!!!");
e.printStackTrace();
}
26.
Android 隐藏应用程序图标
把<category android:name="android.intent.category.LAUNCHER" />删除即可
27.
使用Tab分页内容。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost mTabHost = this.getTabHost();
Intent intent = new Intent(this, TabContent.class);
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra("Yao.GUET", 0);
mTabHost.addTab(mTabHost.newTabSpec("Tab_1")
.setIndicator("Tab 1",
getResources().getDrawable(R.drawable.icon))
.setContent(intent));
Intent intent2 = new Intent(this, TabContent.class);
intent2.setAction(Intent.ACTION_VIEW);
intent2.putExtra("Yao.GUET", 1);
mTabHost.addTab(mTabHost.newTabSpec("Tab_2")
.setIndicator("Tab 2",
getResources().getDrawable(R.drawable.icon))
.setContent(intent2));
mTabHost.setCurrentTab(0);
}
28.
设置透明背景,修改AndroidManifest.xml文件,在对应的Activity里面加上下面的属性:
android:theme="@android:style/Theme.Translucent"
使用系统背景作为应用的背景,在onCreate的时候添加窗口标志:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
播放系统铃声代码
// play the notification sound...
private void playNotifySound(Context context) {
Uri Notify_Sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
MediaPlayer mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(context, Notify_Sound);
final AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) != 0) {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mMediaPlayer.setLooping(false);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
StackTraceElement[] ste = ts.get(Thread.currentThread());
for (StackTraceElement s : ste) {
Log.i(TAG, "StackTraceElement :"+s.toString());
}
<uses-configuration android:reqTouchScreen="finger" />
android:label="@string/app_name"
android:launchMode="singleTask">
增大SD卡的读写缓存,以KB为单位,下面设置2048KB
echo "2048" > /sys/devices/virtual/bdi/179\:0/read_ahead_kb
String str = format.format(new java.util.Date());
发表评论
-
Android 根据所给的图片位置获得Thumbnail
2013-10-06 10:09 1125public void listfiles(Activit ... -
Intent之间传递复杂的对象
2012-04-19 09:24 1481在实际项目中,页面之间传值,除了以上几种,经常还有传递O ... -
android中的分享功能
2012-03-20 14:24 875在Android的种种编程概念中,尤为值得注意的是Inte ... -
分析android动画模块
2012-03-18 10:58 1255主要思路 Tween 动画通过对 View 的内容完成一 ... -
汇集各大视频网站内容的网络视频播放器“天下视频"
2012-03-07 14:27 866天下视频集合了目前所有主流网络视频大站的资源,包括优酷、 ... -
android版中国象棋
2011-11-18 21:07 1209本款游戏专门针对Android手机开发。通过触摸屏幕操作 ... -
好用的腾讯微博客户端
2011-11-15 22:37 917腾讯微博是全中国最主流,最具人气,当前最火爆的微博产品之一。用 ... -
好用的新浪微博客户端
2011-11-12 12:25 17752新浪微博是全中国最主流,最具人气,当前最火爆的微博产品。 ... -
定制自己的ListView
2010-10-09 19:05 1605自定义布局需要哪些东西? 1、数据模型(数据) 2、显示数据的 ...
相关推荐
"Android学习笔记" Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...
### Android学习笔记 #### 1. Android概述 **1.1 Android的特性** - **应用框架**:Android提供了一个强大的应用框架,使得开发者能够轻松地重用基础组件和服务,简化了应用程序的开发流程。 - **Dalvik虚拟机**...
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
Android学习笔记(1)-永远不变的Hello World Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。 SDK的下载...
【Android学习笔记】 Android平台是谷歌推出的一个开放源代码的移动设备操作系统,它为开发者提供了一个全面的软件包,包括操作系统、中间件和关键应用程序。这个平台的主要目标是促进移动应用的创新和多样性,允许...
《Android学习笔记》 在移动应用开发领域,Android操作系统占据着重要的地位,为开发者提供了丰富的API和工具,使得创建各种应用程序变得可能。本压缩包文件包含了一位学习者从第一天到第五天,以及一个特定项目...
Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...
根据给定的信息,我们可以从Java和Android学习笔记中提取出一系列重要的知识点,下面将逐一进行详细解释。 ### Java基础知识 #### 1. 命令行基础操作 - **`javacmd`**: 这个命令是Java命令行工具的一部分,用于...
【Android学习笔记】 Android是一个开源的移动操作系统,主要应用于智能手机和平板电脑。它由Google主导并开源,基于Linux内核。学习Android开发,你需要熟悉Java或Kotlin语言,理解Android SDK、Android Studio...
### Android学习笔记精要 #### 一、Android平台概述与特性 Android平台是谷歌推出的针对移动设备的操作系统,集成了操作系统、中间件和关键应用程序,为开发者提供了完整的开发环境。其核心特性包括: 1. **应用...
在Android学习过程中,掌握核心概念和技术是至关重要的。这篇学习笔记涵盖了Android开发的基本知识点,旨在帮助初学者系统地理解和深入探索这个平台。 1. **Android系统架构**:Android由Linux内核、硬件抽象层...
这份“Android学习笔记”涵盖了从基础到进阶的Android开发知识,旨在帮助开发者深入理解Android系统,并具备开发高质量Android应用的能力。 一、Android系统架构 Android系统分为四个主要层次:Linux内核、系统库和...
《黑马程序员Android学习笔记》是一份专为初学者设计的详尽教程,旨在帮助那些希望踏入安卓开发领域的人员快速掌握核心知识。这份笔记涵盖了从基础到进阶的多个主题,帮助学习者系统地理解Android应用开发的过程。 ...
【Android学习笔记--Binder】 Binder是Android系统中的核心组件,它是Android系统实现进程间通信(IPC,Inter-Process Communication)的主要方式。Binder机制允许不同进程的组件之间进行数据交换和功能调用,就像...
Android学习笔记之开发环境搭建(Eclipse和NetBeans) 最近由于项目需要,学习了Android开发手机应用程序,做了一些重要的笔记,供有兴趣的读者参考。 目前最新版本为2.2sdk,下面讲一下它在Eclipse、NetBeans的开发...
### Android学习笔记知识点详解 #### 一、Android简介与历史 - **定义**: Android是由Google公司主导开发的一款基于Linux内核的操作系统,主要用于移动设备,如智能手机和平板电脑。 - **发展历史**: Android项目...