安卓常用实用功能代码片大全(长期更新)

看别人博客,有些小技巧就直接转过来了,以后做开发可以大大提高开发效率。以下代码片摘自多个博客和自己平时的学习积累,若原作者认为侵犯著作权,请私信告知,我看到后讲第一时间删除。

一、  获取系统版本号:

PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
int versionCode=nfo.versionCode
string versionName=info.versionNam

二、获取系统信息:

String archiveFilePath="sdcard/download/Law.apk";//安装包路径
PackageManager pm = getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
if(info != null){
ApplicationInfo appInfo = info.applicationInfo;
String appName = pm.getApplicationLabel(appInfo).toString();
String packageName = appInfo.packageName; //得到安装包名称
String version=info.versionName; //得到版本信息
Toast.makeText(test4.this, "packageName:"+packageName+";version:"+version, Toast.LENGTH_LONG).show();
Drawable icon = pm.getApplicationIcon(appInfo);//得到图标信息
TextView tv = (TextView)findViewById(R.id.tv); //显示图标
tv.setBackgroundDrawable(icon);

三、获取安装路径和已安装程序列表

android中获取当前程序路径
getApplicationContext().getFilesDir().getAbsolutePath()
(2)android取已安装的程序列表
List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);

四、获取图片、应用名、包名

PackageManager pManager = MessageSendActivity.this.getPackageManager();
List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);
     for(int i=0;i<appList.size();i++) {
         PackageInfo pinfo = appList.get(i);
         ShareItemInfo shareItem = new ShareItemInfo();
         //set Icon
         shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
         //set Application Name shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
        //set Package Name shareItem.setPackageName(pinfo.applicationInfo.packageName);
}

五、解决listview上 Item上有按钮时 item本身不能点击的问题

1. 在item试图上面添加代码: android:descendantFocusability="blocksDescendants"
2.在listview里 添加代码 android:focusable="true"

六、不让文本框输入中文:

android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./[email protected]#$%^*()_+}{:?&<>"'"
这样就不会输入中文了。

七、获取屏幕宽高

DisplayMetrics displayMetrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

八、将TabWidget显示在屏幕下方

设置TabWidget的属性 android:layout_alignParentBottom="true"

九、获取线程ID和线程名称:

Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName());

十、android中调用其它android应用

ComponentName comp = new ComponentName("com.Test","com.login.Main");
 intent = new Intent();
 intent.setComponent(comp);
 intent.setAction("android.intent.action.VIEW");
 startActivity(intent);

十一、禁止软键盘弹出

EditText有焦点(focusable为true)阻止输入法弹出 editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘 当EidtText无焦点(focusable=false)时阻止输入法弹出

InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

【Android】EditText标签调用键盘

在xml文件中EditText标签有一个属性android:editable="false"和android:numeric="integer"

android:numeric="integer"表示只允许输入数字,此属性可以限制用户只能输入数字内容。

android:editable表示是否可以输入内容TRUE表示可以输入,false表示不允许输入内容;

当为android:editable="false"时,点击输入框,虚拟键盘是显示不出来的,不过当设置了 android:editable=""属性时,不管是false还是true,在其后加入android:numeric="integer"属性时,是可以输入数字内容了;这里没搞明白是怎么回事,也许是numeric把前面的属性覆盖掉了。

当android:editable="false"时,在java类里如果再规定EditText.setEnabled(true)时,虚拟键盘还是不会显示的。

十二、模拟器的各种规格与分辨率对照:

单位:像素
WVGA854: 854*480
WVGA800: 800*480
HVGA: 480*320
QVGA: 320*240
WQVGA432:432*240
WQVGA400:400*240 

十三、调用Android其他Context的Activity

Context c = createPackageContext("chroya.demo", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
//载入这个类
Class clazz = c.getClassLoader().loadClass("chroya.demo.Main");
//新建一个实例
Object owner = clazz.newInstance();
//获取print方法,传入参数并执行
Object obj = clazz.getMethod("print", String.class).invoke(owner, "Hello");

这个方法有两个参数:

1、packageName  包名,要得到Context的包名

2、 flags  标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。 CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思
是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。

十四、android4.0Dialog风格小技巧

4.0上如果还用Theme.Dialog,只能说很土,跟整体UI风格差别很大

请使用android:theme="@android:style/Theme.Holo.DialogWhenLarge"

十五、程序中安装apk(其中“apk”为你要安装的那个文件)

Intent intent = new Intent();
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	intent.setAction(android.content.Intent.ACTION_VIEW);
	intent.setDataAndType(Uri.fromFile(“APK”),"application/vnd.android.package-archive");
	startActivity(intent);

十六、获取设备型号、SDK版本及系统版本

String device_model = Build.MODEL; // 设备型号
String version_sdk = Build.VERSION.SDK; // 设备SDK版本
String version_release = Build.VERSION.RELEASE; // 设备的系统版本  

十七、图片分析功能

public void SharePhoto(String photoUri,final Activity activity) {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    File file = new File(photoUri);
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    shareIntent.setType("image/jpeg");
    StartActivity(Intent.createChooser(shareIntent, activity.getTitle()));
}  

十八、linux关机命令(乱入一条

在Windows下,按着电源键4秒强制关机,在Linux下强烈不建议这么做。Windows由于是单用户、“假多”任务的情况,所以即使你的计算机关机,也不会对别人造成影响。不过在Linux中,由于每个程序都是在后台执行的,因此,在你看不到的屏幕背后可能有很多人同时在你的主机上工作。而且,若不正常关机可能会造成文件系统的损毁。所以,正常情况下,要关机时需要注意下面几件事情:

(1)查看系统的使用状态。

要看目前有谁在线,可以用who命令。要看网络的联机状态,可以用netstat-a命令。要看后台执行那个的程序可以执行ps-aux命令。

(2)通知在线用户的关机时刻

这个时候可以使用shutdown命令

Shutdown命令:
语法:shutdown[-t秒][-arkhncfF]时间 警告消息
-t:后面加描述表示过几秒之后关机。
-k:不是真的关机,仅仅发出警告消息。
-r:将系统服务停掉之后重启。
-h:将系统服务停掉之后立即关机。
-f:关机并开机之后,强制跳过fsck的磁盘检查。
-F:系统重启之后,强制进行fsck的磁盘检查。
-c:取消已经进行的shutdown命令内容。

另外,重启关机命令有reboot、halt、poweroff。其实在默认情况下,都完成一样的工作。
halt先调用shutdown,而shutdown最后调用halt。不过,shutdown可以根据目前已经启动的服务来逐次关闭服务后才关机;而halt能够在不理会目前系统情况下,进行硬件关机的特殊功能。

除了这些,还有一个关机命令是init 0
init是切换执行等级的命令。Linux共有7种执行等级,比较重要的是下面4种等级:
run level 0:关机
run level 3:纯命令行模式
run level 5:含有图形界面模式
run level 6:重启

十九、让自己的应用不被kill掉

可以在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java这个类的forceStopPackage中加一个条件:

public void forceStopPackage(final String packageName) {
        if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)
                != PackageManager.PERMISSION_GRANTED) {
            String msg = "Permission Denial: forceStopPackage() from pid="
                    + Binder.getCallingPid()
                    + ", uid=" + Binder.getCallingUid()
                    + " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES;
            Slog.w(TAG, msg);
            throw new SecurityException(msg);
        }
        long callingId = Binder.clearCallingIdentity();
        try {
            IPackageManager pm = ActivityThread.getPackageManager();
            int pkgUid = -1;
            synchronized(this) {
                try {
                    pkgUid = pm.getPackageUid(packageName);
                } catch (RemoteException e) {
                }
                if (pkgUid == -1) {
                    Slog.w(TAG, "Invalid packageName: " + packageName);
                    return;
                }
                //begin:加入一个判断条件
                if (packageName.equals("你的进程名")) {
                    return;
                }
                //end: 加入一个判断条件                                forceStopPackageLocked(packageName, pkgUid);
            }
        } finally {
            Binder.restoreCallingIdentity(callingId);
        }
    }

这样的话在任务管理器里可以保证KISS不掉的;

还有在这个方法上还有个方法clearApplicationUserData中保证如果是该进程就不让调用forceStopPackage()方法。

另:其他方法:

1,首先在你的service的onDestory方法里面写上启动你自己的代码,为什么要写这个?因为如果用户是在设置->应用程序->正在运行服务这里面杀掉你service的话会调用到onDestory方法的,这里就可以启动了,

2:监听屏幕关闭广播,屏幕已关闭,就启动服务。

3:监听屏幕解锁广播,一样的道理,这样,基本上,你的service就达到永不停止了。对用户来说有点变态,但很多软件都这样。

二十、EditText获取焦点:

EditText.requestFoucus()

二十一、获取手机屏幕分辨率

    DisplayMetrics  dm = new DisplayMereics();  

    getWindowManager().getDefaultDisplay().getMetrics(dm);  

    float width = dm.widthPixels * dm.density;  

   float height = dm.heightPixels * dm.density  

二十二、在Activity里面播放背景音乐

   public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.mainlay);
           mediaPlayer = MediaPlayer.create(this, R.raw.mu);
           mediaPlayer.setLooping(true);
           mediaPlayer.start();  

    }

二十三、让程序的界面不随机器的重力感应而翻转

第一种方法,在manifast文件里面

 <activity
     android:screenOrientation="portrait">
 </activity>  

第二种,在代码里面

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  

二十四、使activity全屏显示

 requestWindowFeature(Window.FEATURE_NO_TITLE);
 getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,WindowManager.LayoutParams. FLAG_FULLSCREEN);  

二十五、在RelativeLayout中使selector要注意点

关于selector的使用方法,可以参考http://blog.csdn.net/aomandeshangxiao/article/details/6759576这篇文章,今天,遇到在RelativeLayout中添加background为selector后没有反应的问题,寻摸了很长时间,一直没有找到原因,其实只要加上一句代码就完全可以解决:

RelativeLayout 里面加上android:clickable="true"

二十六、显示或隐藏虚拟键盘

    显示:
    InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);  

    隐藏:
    InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
    imm.hideSoftInputFromWindow(m_edit.getWindowToken(), 0);  

二十七、退出程序时清除通知中信息

  NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  nm.cancelAll();  

二十八、创建快捷方式

    Intent intent=new Intent();
    //设置快捷方式的图标
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.img));
    //设置快捷方法的名称
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "点击启动哥的程序");            //设置点击快键图标的响应操作  
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,MainActivity.class));
    //传递Intent对象给系统
    setResult(RESULT_OK, intent);
    finish();  

二十九、获取文件中的类名:

    String path = context.getPackageManager().getApplicationInfo(
                                            context.getPackageName(), 0).sourceDir;
                            DexFile dexfile = new DexFile(path);
                            Enumeration<String> entries = dexfile.entries();
                            while (entries.hasMoreElements()) {
                                    String name = (String) entries.nextElement();
                                    ......
                            }  

三十. TextView中的getTextSize返回值是以像素(px)为单位的,

而setTextSize()是以sp为单位的.

所以如果直接用返回的值来设置会出错,解决办法是:

用setTextSize()的另外一种形式,可以指定单位

    TypedValue.COMPLEX_UNIT_PX : Pixels
    TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
    TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels  

三十一. 在继承自View时,绘制bitmap时,需要将图片放到新建的drawable-xdpi

中,否则容易出现绘制大小发生改变

三十二. 在文字中加下划线: textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

三十三. scrollView是继承自frameLayout,所以在使用LayoutParams时需要用frameLayout的

三十四、android阴影字体设置

    <TextView
     android:id="@+id/tvText1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="text1"
     android:textSize="30sp"
     android:textStyle="bold"
     android:textColor="#FFFFFF"
     android:shadowColor="#ff0000ff"
     android:shadowDx="5"
     android:shadowDy="5"
     android:shadowRadius="10"/>  

android:shadowColor 阴影颜色

android:shadowDx 阴影的水平偏移量

android:shadowDy 阴影的垂直偏移量

android:shadowRadius 阴影的范围

为了统一风格和代码的复用,通常可以把这个样式抽取放入到style.xml文件中

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="textstyle">
            <item name="android:shadowColor">#ff0000ff</item>
            <item name="android:shadowRadius">10</item>
            <item name="android:shadowDx">5</item>
            <item name="android:shadowDy">5</item>
        </style>
    </resources>  
    <TextView
            style="@style/textstyle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="字体样式"
            android:textSize="30sp"
            android:textStyle="bold" />  

三十五、android实现手机震动功能(这个还可以创建一个数组来控制震动,达到震动几秒然后再震动几秒,,你懂得)

    import android.app.Activity;
    import android.app.Service;
    import android.os.Vibrator;  

    public class TipHelper {
        public static void Vibrate(final Activity activity, long milliseconds) {
            Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
            vib.vibrate(milliseconds);
        }
        public static void Vibrate(final Activity activity, long[] pattern,boolean isRepeat) {
            Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
            vib.vibrate(pattern, isRepeat ? 1 : -1);
        }
    }  

还需要在AndroidManifest.xml 中添加震动权限:

    <uses-permission android:name="android.permission.VIBRATE" />  

通过上面操作,我们可以使用TipHelper所定义的函数了。两个Vibrate函数的参数简单介绍如下:

final Activity activity  :调用该方法的Activity实例

long milliseconds :震动的时长,单位是毫秒

long[] pattern
  :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒

boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次

三十六、常用的正则表达式

^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //email地址

^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //url

^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$ //年-月-日

^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$  //月/日/年

^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$   //Emil

^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$     //电话号码

^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$   //IP地址

(^\s*)|(\s*$)   // 首尾空格

^[a-zA-Z][a-zA-Z0-9_]{4,15}$  // 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)

^[1-9]*[1-9][0-9]*$  //  腾讯QQ号

三十七、输入框不挤压activity布局

在manifest的activity下添加

  1. android:windowSoftInputMode="adjustPan"

三十八、listview中item中button可点击:

    android:descendantFocusability="blocksDescendants"  

三十九、获取移动设备的IP地址:

    public class Tools {
        public static String getLocalIpAddress() {
            try {
                for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                    NetworkInterface intf = en.nextElement();
                    for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                        InetAddress inetAddress = enumIpAddr.nextElement();
                        if (!inetAddress.isLoopbackAddress()) {
                            return inetAddress.getHostAddress().toString();
                        }
                    }
                }
            } catch (SocketException ex) {
                Log.e("出错啦", ex.toString());
            }
            return null;
        }
    }
    然后
            WifiManager wm = (WifiManager)getSystemService(WIFI_SERVICE);
            WifiInfo wi = wm.getConnectionInfo();
            System.out.println("IP地址是:"+Tools.getLocalIpAddress());
            System.out.println("SSID:"+wi.getSSID());
    最后记得加两个权限
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  

四十、高仿小米launcher跨屏拖动item(GridView长按item进行拖动

        触发长按事件后浮动原理:

    windowParams = new WindowManager.LayoutParams();
      windowParams.gravity = Gravity.TOP | Gravity.LEFT;
      windowParams.x = x - itemWidth / 2;
      windowParams.y = y - itemHeight / 2;
      windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
      windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
      ImageView iv = new ImageView(getContext());
      iv.setImageBitmap(bm);
      windowManager = (WindowManager) getContext().getSystemService(
      Context.WINDOW_SERVICE);// "window"
      windowManager.addView(iv, windowParams);  

拖动效果:

    if (dragImageView != null) {
      windowParams.alpha = 0.6f;
      windowParams.x = x - itemWidth / 2;
      windowParams.y = y - itemHeight / 2;
      windowManager.updateViewLayout(dragImageView, windowParams);
      }  

四十一、数据库写入图片信息:

数据库中的字段设置为 binary类型
Bitmap bitmap = BitmapFactory.decodeFile(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bitmap.compress(CompressFormat.JPEG, 50, baos);
String sql = "insert into pic_info(pic_data, pic_name,pic_size,send_date,is_success) " +"values(?,?,?,?,?)";
                Object[] args = new Object[]{baos.toByteArray(), name, size, now, isSucess};
db.insert(sql, args);
读取数据库的图片信息:
byte[] picData = cursor.getBlob(cursor.getColumnIndex("pic_data"));
bitmap.setImageBitmap(BitmapFactory.decodeByteArray(picData, 0, picData.length));

四十二、listView的addView的问题。

在listView里使用addView()、addFooterView(v)、addHeaderView(v)时,要在setAdepter以前添加,或者在重写的Adapter中添加。因为setAdapter以后,就是listView已经绘制完毕,不能再进行添加。

四十三、progressBar修改颜色

有的时候,我们使用progressBar的时候,后面的背景色是白色或者是亮色,使得progressBar效果很不明显,所以,我们可以在下面三条中随意添加一条熟悉就可以了:

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>

四十四、窗口透明(背景模糊等)

先看下效果图:

第一种效果:

在styles.xml中定义

<style name="Theme.Translucent" parent="android:style/Theme.Translucent">
<item name="android:windowBackground">
@drawable/translucent_background
</item>
<item name="android:windowNoTitle">true</item>
<item name="android:colorForeground">#fff</item>
</style>

第二种效果是在源代码里面修改,在onCreate方法里面添加:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
setContentView(R.layout.translucent_background);

设置模糊效果是通过窗口管理器(WindowManager)设置参数来完成的,这种设置只有在背景设置为透明后才能显示效果。

四十五、Android输入框和文本框滚动条ScrollView

我们都知道EditText与TextView是Android的文本输入框和文本显示框,但是基于手机屏幕的大小因素,如果在需要输入较多文字或者显示较多内容的时候,手机屏幕是远远不够的,因此让文本框具有滚动条的功能是手机上必备的,要加上滚动条,其实很简单,只需要在文本输入框或者文本显示框上面加上滚动条控件即可,该控件名字为ScrollView,以下我们对比下(以TextView举例)。

<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="200px"
android:scrollbarStyle="outsideOverlay" android:background="@android:drawable/edit_text">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView"
/>
</ScrollView>

四十六、Android模拟器启动内存错误(内存不能为read)


如图


运行模拟器的时候总是会内存错误。

这种情况偶尔出现,没什么关系,不用管他。点击‘取消’就可以了。

经常出现就危险了,弄不好就得重装系统了。

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。

“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。

“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。

一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件

开始 运行 输入:cmd 确定:

在DOS提示符下输入:

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

等待3分钟,左右后,搞定了。(如果怕输错,就把这句话复制上去)。

四十七、通过路径获取媒体文件信息

通过路径获取媒体文件信息  http://blog.csdn.net/aomandeshangxiao/article/details/6600725

四十八、Java中有用的文件操作

java文件操作 http://blog.csdn.net/aomandeshangxiao/article/details/6597302

四十九、Android文件读写

Android文件的读写 http://blog.csdn.net/aomandeshangxiao/article/details/6589510

五十、    scaleType属性与ImagView中图片的显示的关系

五十一、  Notification的属性notification的各种属性:

http://blog.csdn.net/aomandeshangxiao/article/details/6608101

五十二、Android控件实现震动:

先在res下面新创建anim文件夹,在该文件夹中创建shake.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
	android:duration="1000"
	android:fromYDelta="0"
	android:toYDelta="10"
	android:fromXDelta="0"
	android:toXDelta="10"
	android:interpolator="@anim/cycle_7" />

最后引用了cycle_7,再在该文件夹中创建cycle_7.xml文件

<?xml version="1.0" encoding="utf-8"?>

<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
	android:cycles="10" />

在Java代码里面:

Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
		findViewById(R.id.image).startAnimation(shake);

五十三、Android 页面切换动画效果

      http://hi.baidu.com/fountainblog/blog/item/66cb9918b0220eaa4bedbc2e.html

五十四、Android2.2完全退出程序

http://www.eoeandroid.com/thread-62284-1-1.html

五十五、Android按下back键非退出隐藏到后台

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addCategory(Intent.CATEGORY_HOME);
        startActivity(intent);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}  

五十六、在Android开发中使用Gallery实现多级联动

http://mobile.51cto.com/hot-230282.htm

五十七、获取view在屏幕中的位置:

int[] points = { 0, 0 };
view.getLocationInWindow(points);

这里用数组存储view的x和y坐标,point[0]是x坐标,point[1]是y坐标。

五十八、在图形中添加文字

@Override
	protected synchronized void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		Rect rect = new Rect();
		this.mPaint.getTextBounds(this.text, 0, this.text.length(), rect);
		int x = (getWidth() / 2) - rect.centerX();
		int y = (getHeight() / 2) - rect.centerY();
		canvas.drawText(this.text, x, y, this.mPaint);
	}

五十九、使用Vibrator实现手机震动

@Override
	public boolean onTouchEvent(MotionEvent event) {

		if(event.getAction() == MotionEvent.ACTION_DOWN){
			 vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
		     long[] pattern = {800, 40,400, 30}; // OFF/ON/OFF/ON...
		     vibrator.vibrate(pattern, 2);//-1不重复,非-1为从pattern的指定下标开始重复
		}
		return super.onTouchEvent(event);
	} 

六十、界面重绘

invalidate()或者view.postinvalidate()方法

未完待续。。。。

时间: 2024-10-11 22:12:33

安卓常用实用功能代码片大全(长期更新)的相关文章

【cocos2dx 3.2】使用搜狗输入法短词,复用常用的代码段

引言: 在写cocos2dx代码的时候,发现有些代码是固定格式,经常要重用 故把它们不断收集起来,然后添加到搜狗输入法的短词里面 这样需要重用的时候,直接输快捷键,效率就提高了 把常用的代码段收集起来,做成一个CHM文档方便设置短词时查阅 搜狗输入法添加短词: 右键搜狗输入法,点击[设置属性] 选择[高级],然后选择右边的[自定义短语设置] 点击[添加新定义],添加自己的快捷键和代码段 常用的代码段(不断更新) 新建一个类的时候,需要写create方法和init方法,快捷键设为cre //创建c

【安卓】数据库基于脚本的&quot;增量更新&quot;,每次更新时不需修改java代码、!

思路: 1.当然是基于SQLiteOpenHelper.onCreate(第一次安装程序时调用).onUpdate(升级程序时调用) 2.用"脚本"(脚本制作具体方法问度娘)做数据库升级,文件名标识对应版本,java中根据"上一版本.当前版本"选择执行的脚本. 升级时,修改DB_VERSION(当前版本)即可. DBManager.java: package com.example.test; import java.io.ByteArrayOutputStream

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

100个直接可以拿来用的JavaScript实用功能代码片段

把平时网站上常用的一些实用功能代码片段通通收集起来,方面网友们学习使用,利用好的话可以加快网友们的开发速度,提高工作效率. 目录如下: 1.原生JavaScript实现字符串长度截取2.原生JavaScript获取域名主机3.原生JavaScript清除空格4.原生JavaScript替换全部5.原生JavaScript转义html标签6.原生JavaScript还原html标签7.原生JavaScript时间日期格式转换8.原生JavaScript判断是否为数字类型9.原生JavaScript

100个直接可以拿来用的JavaScript实用功能代码片段(转)

把平时网站上常用的一些实用功能代码片段通通收集起来,方面网友们学习使用,利用好的话可以加快网友们的开发速度,提高工作效率. 目录如下: 1.原生JavaScript实现字符串长度截取2.原生JavaScript获取域名主机3.原生JavaScript清除空格4.原生JavaScript替换全部5.原生JavaScript转义html标签6.原生JavaScript还原html标签7.原生JavaScript时间日期格式转换8.原生JavaScript判断是否为数字类型9.原生JavaScript

常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》

常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop data

visual studio 2013常用快捷键 VS2013快捷键大全

visual studio 2013常用快捷键 VS2013快捷键大全 Visual Studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.VS 2013 中新增了很多提高开发人员工作效率的新功能,比如自动补全方括号.使用快捷键移动整行或整块的代码等: 合理使用快捷键可以提高开发效率.但是Visual Studio提供的快捷键多如牛毛,那我们有没有必要掌握所有快捷键的使用方法呢,答案因人而异.就我

代码优化(长期更新)

前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了.代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨:但是如果有足够的时间开发.维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的. 代码优化的目标是:

js常用功能代码

js常用功能代码(持续更新): 1,--折叠与展开 <input id="btnDisplay" type="button" class="baocun2" value="添加" onclick="changeDisplay()" /> <script type="text/javascript"> function changeDisplay() { var h