博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】开发中的小技术(持续更新)
阅读量:4971 次
发布时间:2019-06-12

本文共 7305 字,大约阅读时间需要 24 分钟。

【特】

 

1.WebView加载各种类型的网页

//打开本包内asset目录下的index.html文件wView.loadUrl(" file:///android_asset/index.html ");  //打开本地sd卡内的index.html文件wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");//打开指定URL的html文件wView.loadUrl(" http://m.oschina.net");

 

2.在一个应用程序中启动另外一个应用程序

Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);            ComponentName cn = new ComponentName("com.android.androidweb", "com.android.androidweb.AndroidWeb"); //前面是包名,后面是主类名         intent.setComponent(cn);startActivity(intent);

下面记录一个很特殊的,是系统自带的相册程序:

Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);            ComponentName cn = new ComponentName("com.android.gallery", "com.android.camera.GalleryPicker");            intent.setComponent(cn);startActivity(intent);

知道包名获取启动类的方法:

PackageManager pm = getPackageManager();PackageInfo pi;try {	pi = pm.getPackageInfo("com.android.androidweb", 0);//此处加入包名~	Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);	resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);	resolveIntent.setPackage(pi.packageName);	List
apps = pm.queryIntentActivities(resolveIntent, 0); ResolveInfo ri = apps.iterator().next(); if (ri != null ) {   String packageName = ri.activityInfo.packageName;   String className = ri.activityInfo.name;   Intent intent = new Intent(Intent.ACTION_MAIN);   intent.addCategory(Intent.CATEGORY_LAUNCHER);   ComponentName cn = new ComponentName(packageName, className);   intent.setComponent(cn);   startActivity(intent);   } } catch (NameNotFoundException e) {   // TODO Auto-generated catch block   e.printStackTrace(); }

 

6.SQLite数据库中实现ID自增

将字段声明为:INTEGER PRIMARY KEY AUTOINCREMENT

 

7.读取返回的Cursor的内容

1 Cursor cursor = ThumbnailsImages.queryPicDirectory(getContentResolver()); 2 String display = ""; 3 cursor.moveToFirst(); 4 while(!cursor.isAfterLast()){ 5     display = display + cursor.getString(0) + "/"; 6     display = display + cursor.getString(1) + "/"; 7     cursor.moveToNext(); 8 } 9 view.setText(display);10 cursor.close();

 

10.文件过滤器

1 mFiles = mDirectory.listFiles(new FilenameFilter() { 2                     public boolean accept(File file, String name) { 3                         if (name.toLowerCase().endsWith(".pdf")) 4                             return true; 5                         if (name.toLowerCase().endsWith(".xps")) 6                             return true; 7                         if (name.toLowerCase().endsWith(".cbz")) 8                             return true; 9                         return false;10                     }11                 });12 13                 Arrays.sort(mFiles, new Comparator
() {14 public int compare(File arg0, File arg1) {15 return arg0.getName().compareToIgnoreCase(arg1.getName());16 }17 });

 

11.操作软键盘(出现和隐藏)

1   void showKeyboard() { 2         InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 3         if (imm != null) 4                         //mSearchText是一个搜索输入框(EditText) 5             imm.showSoftInput(mSearchText, 0); 6     } 7  8     void hideKeyboard() { 9         InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);10         if (imm != null)11             imm.hideSoftInputFromWindow(mSearchText.getWindowToken(), 0);12     }

 

 12.移动Dialog的位置

1 Dialog dialog = new Dialog(this); 2          3         // setContentView可以设置为一个View也可以简单地指定资源ID 4         // LayoutInflater 5         // li=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 6         // View v=li.inflate(R.layout.dialog_layout, null); 7         // dialog.setContentView(v); 8         dialog.setContentView(R.layout.dialog_layout); 9 10         dialog.setTitle("Custom Dialog");11 12         /* 13          * 获取圣诞框的窗口对象及参数对象以修改对话框的布局设置,14          * 可以直接调用getWindow(),表示获得这个Activity的Window15          * 对象,这样这可以以同样的方式改变这个Activity的属性.16          */17         Window dialogWindow = dialog.getWindow();18         WindowManager.LayoutParams lp = dialogWindow.getAttributes();19         dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);20 21         /*22          * lp.x与lp.y表示相对于原始位置的偏移.23          * 当参数值包含Gravity.LEFT时,对话框出现在左边,所以lp.x就表示相对左边的偏移,负值忽略.24          * 当参数值包含Gravity.RIGHT时,对话框出现在右边,所以lp.x就表示相对右边的偏移,负值忽略.25          * 当参数值包含Gravity.TOP时,对话框出现在上边,所以lp.y就表示相对上边的偏移,负值忽略.26          * 当参数值包含Gravity.BOTTOM时,对话框出现在下边,所以lp.y就表示相对下边的偏移,负值忽略.27          * 当参数值包含Gravity.CENTER_HORIZONTAL时28          * ,对话框水平居中,所以lp.x就表示在水平居中的位置移动lp.x像素,正值向右移动,负值向左移动.29          * 当参数值包含Gravity.CENTER_VERTICAL时30          * ,对话框垂直居中,所以lp.y就表示在垂直居中的位置移动lp.y像素,正值向右移动,负值向左移动.31          * gravity的默认值为Gravity.CENTER,即Gravity.CENTER_HORIZONTAL |32          * Gravity.CENTER_VERTICAL.33          * 34          * 本来setGravity的参数值为Gravity.LEFT | Gravity.TOP时对话框应出现在程序的左上角,但在35          * 我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了,36          * Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM与Gravity.RIGHT都是如此,据边界有一小段距离37          */38         lp.x = 100; // 新位置X坐标39         lp.y = 100; // 新位置Y坐标40         lp.width = 300; // 宽度41         lp.height = 300; // 高度42         lp.alpha = 0.7f; // 透明度43 44         // 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes45         // dialog.onWindowAttributesChanged(lp);46         dialogWindow.setAttributes(lp);47 48         /*49          * 将对话框的大小按屏幕大小的百分比设置50          */51 //        WindowManager m = getWindowManager();52 //        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用53 //        WindowManager.LayoutParams p = getWindow().getAttributes(); // 获取对话框当前的参数值54 //        p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.655 //        p.width = (int) (d.getWidth() * 0.65); // 宽度设置为屏幕的0.9556 //        dialogWindow.setAttributes(p);57 58         dialog.show();

 

13.数据库操作

 

14.环形ProgressBar的实现

1  android:fromDegrees="0" 2     android:pivotX="50%" 3     android:pivotY="50%" 4     android:toDegrees="360" > 5  6     7         android:innerRadiusRatio="3" 8         android:shape="ring" 9         android:thicknessRatio="30"10         android:useLevel="false" >11 12        13             android:centerColor="#FFFFFF"14             android:centerY="0.01"15             android:endColor="#FFFFFF"16             android:startColor="#000000"17             android:type="sweep"18             android:useLevel="false" />
View Code
1 
View Code
gradient里的属性没什么好介绍的, 这里主要是shape.
下列属性只在android:shape=”ring”时使用:
android:innerRadiux
尺寸值,它用尺寸值或尺寸资源指定圆环内部的半径(指中间的圆孔的半径)。
 
android:innerRadiusRatio
浮点值,它用圆环宽度的比率来表示内部圆环的半径。例如,如果android:innerRadiusRatio=”5”,那么内部半径就等于圆环的宽度除以5。这个值会被android:innerRadius的值覆盖。默认是9。
 
android:thickness
尺寸值,它用一个尺寸值或尺寸资源来定义圆环的厚度。
 
android:thicknessRatio
浮点值。它用圆环宽度的比率来表示圆环的厚度。例如,如果android:thicknessRatio=”2”,那么厚度就等于圆环的宽度除以2。这个值会被android:innerRadius覆盖。默认值是3。也就是说这个值设置的越大圆环就越细了。
 
android:useLevel
布尔值,如果这个形状要用于LevelListDrawable对象,那么就设置为true。通常应该设置为false或者让形状不可见。
 
15、Notification中如何打开一个已经存在的Activity?
Notification并不要求一定重新启动一个全新的Activity(如果已经存在),如果想要打开一个已经存在的Activity,则将生成PendingIntent的intent设置为:
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
即可。

转载于:https://www.cnblogs.com/lqminn/archive/2011/12/08/2281351.html

你可能感兴趣的文章
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
执行了的程序,才是你的程序.
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql adddate()函数
查看>>
mysql sin() 函数
查看>>
mysql upper() 函数
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
3-day3-list-truple-map.py
查看>>