最近学习安卓中总结的一些知识点 复制代码

转载来自于http://www.cnblogs.com/ycxyyzw/archive/2013/04/01/2992746.html

1.    理解 application的图标 和 桌面activity的图标

<application
       //在设置→应用程序→管理应用程序 里面列出的图标
        android:icon="@drawable/icon5"
        //在设置→应用程序→管理应用程序 里面列出的名字
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".ui.SplashActivity"
            //在手机桌面上生成的图标
            android:icon="@drawable/icon5"
            //在手机桌面上生成的名字
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        </application>
在清单文件中对应的节点配置.
2.    Splash全屏显示
// 取消标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 完成窗体的全屏显示 // 取消掉状态栏
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
Ps: 也可以通过主题设置窗体全屏显示
  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

3.    pull解析xml
/**
     * 把person.xml的输入流 解析 转化成list集合
     * @param filename  assets目录下的文件名
     * @return
     */
    public List<Person> getPersons(String filename){
        AssetManager manager = context.getAssets();
        try {
            InputStream  is = manager.open(filename);
            //在android下使用pull解析xml文件
            //1.获取pull解析器的实例
            XmlPullParser  parser = Xml.newPullParser();
            //2.设置解析器的一些参数
            parser.setInput(is, "utf-8");
            // 获取pull解析器对应的事件类型
            int type = parser.getEventType();
            Person person = null;
            List<Person> persons = new ArrayList<Person>();
            while(type!=XmlPullParser.END_DOCUMENT){
    
                if(type==XmlPullParser.START_TAG){
                    if("person".equals(parser.getName())){
                        person = new Person();
                        int id =Integer.parseInt( parser.getAttributeValue(0));
                        person.setId(id);
                    }else if("name".equals(parser.getName())){
                        String name = parser.nextText();
                        person.setName(name);
                    }else if("age".equals(parser.getName())){
                        int age = Integer.parseInt( parser.nextText());
                        person.setAge(age);
                    }
                }
                if(type==XmlPullParser.END_TAG){
                    if("person".equals(parser.getName())){
                        persons.add(person);
                        person = null;
                    }
                }
                
                
                 type = parser.next();
            }
            
            return persons;
            
            
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(context, "获取person.xml失败", Toast.LENGTH_SHORT).show();
            return null;
        }
    }
4.    URL httpUrlConnection
public UpdateInfo getUpdataInfo(int urlid) throws Exception {
String path = context.getResources().getString(urlid);
        URL url = new URL(path);//将路径解析成url
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();//打开连接
        conn.setConnectTimeout(2000);//设置超时时间
        conn.setRequestMethod("GET");//设置请求方法
        InputStream is = conn.getInputStream();//获取返回的流
        //pull解析器解析
        XmlPullParser parser = Xml.newPullParser();
        UpdateInfo info = new UpdateInfo();
        parser.setInput(is, "utf-8");
        int type = parser.getEventType();

        while (type!=XmlPullParser.END_DOCUMENT) {
            switch (type) {
            case XmlPullParser.START_TAG:
                if ("version".equals(parser.getName())) {
                    info.setVersion(parser.nextText());
                }else if ("description".equals(parser.getName())) {
                    info.setDescription(parser.nextText());
                }else if ("apkurl".equals(parser.getName())) {
                    info.setApkurl(parser.nextText());
                }
                break;
             
            }
            type = parser.next();
            
        }
        return info;

    }
    }

5.    获取当前客户端版本号
PackageInfo info = getPackageManager().getPackageInfo(
                    getPackageName(), 0);
            return info.versionName;

6.    安装新的apk
激活系统的安装的组件 intent();
设置数据 和数据的类型
setDataAndType();
setData();
setType();

private void install(File file){
        Intent intent=new Intent();
        intent.setAction(Intent.ACTION_VIEW);//显示指定数据
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
        this.finish();
        startActivity(intent);
        
    }

7.    对话框 创建 AlertDialog.buidler
Builder.create().show();

8.    Handler message 子线程里面通知主线程ui更新
private TextView tv;
    //1 .创建出来handler 要求必须在主线程里面创建
    private Handler handler = new Handler(){

        // 主线程处理消息 调用的方法
        @Override
        public void handleMessage(Message msg) {
            int count  = (Integer) msg.obj;
            tv.setText("当前条目为 "+ count);
            super.handleMessage(msg);
        }
        
        
    };
    
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView) this.findViewById(R.id.tv);
        
        //每隔2秒钟更新一下 tv的内容
        new Thread(){

            @Override
            public void run() {
                for(int i = 0;i<100;i++){
        /*            tv.setText("当前为"+ i);*/
                    try {
                        sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Message msg = new Message();
                    msg.obj = i;
                    handler.sendMessage(msg);
                    
                }
                super.run();
            }
        }.start();
    
    }

9.    GridView ListView  adapter  - > BaseAdapter
//将一个XML文件转化成一个view对象
View view=View.inflate(context, R.layout.mainscreen_item, null);

10.    Xml ->定义一个背景颜色  shape  (参考api文件)


11.    Xml -> selector 颜色选择器 根据当前控件的状态显示不同颜色.

12.    Sharedpreference 的使用
Sp.edit(); -> Editor editor
Editor.put()…
Editor.commit(); // 真正的提交数据

13.    自定义对话框的写法
定义一个样式文件 重写了系统的一些默认配置
name="android:windowBackground">@drawable/title_background
name="android:windowNoTitle">true</item>

dialog = new Dialog(this, R.style.MyDialog);//R.style.MyDialog 是自定义的一个xml文件
        dialog.setCancelable(false);

        View view = View.inflate(this, R.layout.normal_entry_dialog, null);
        et_pwd = (EditText) view.findViewById(R.id.et_normal_entry_pwd);
        Button bt_normal_ok = (Button) view
                .findViewById(R.id.bt_normal_dialog_ok);
        Button bt_normal_cancel = (Button) view
                .findViewById(R.id.bt_normal_dialog_cancel);
        bt_normal_ok.setOnClickListener(this);
        bt_normal_cancel.setOnClickListener(this);
        dialog.setContentView(view);
        dialog.show();



14.    Md5的编码和加密 (不可逆的加密算法)


15.    style的使用
可以把一些常用的样式定义为style,重复使用。
然后style="@style/text_content_style" 直接引用

16.    更改activity切换的动画效果
overridePendingTransition(R.anim.alpha_in, R.anim.alpha_out);

17.    获取新打开的activity的返回值
StartactivityforResult();
SetResultData();

OnActivityResult();


18.    DeviceAdmin的技术 2.2版本支持 -> wipedata() setpwd();
不能直接被卸载 在设备管理器里面取消激活 ;
主要步骤如下:
deviceadmin步骤
(1).创建 MyAdmin 的广播接受者 继承 DeviceAdminReceiver

        <receiver android:name=".MyAdmin">
            <meta-data android:name="android.app.device_admin"
                android:resource="@xml/my_admin" />
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>


my_admin.xml

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
        <uses-policies>
                <limit-password />
                <watch-login />
                <reset-password />
                <force-lock />
                <wipe-data />
        </uses-policies>
</device-admin>

(2).获取IDevicePolicyManager



Method method = Class.forName("android.os.ServiceManager")
                    .getMethod("getService", String.class);
IBinder binder = (IBinder) method.invoke(null,
                    new Object[] { Context.DEVICE_POLICY_SERVICE });
mService = IDevicePolicyManager.Stub.asInterface(binder);

(3).注册广播接受者为admin设备
ComponentName mAdminName = new ComponentName(this, MyAdmin.class);
if (mService != null) {
        if (!mService.isAdminActive(mAdminName)) {
                    Intent intent = new Intent(
                    DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                    intent.putExtra                (DevicePolicyManager.EXTRA_DEVICE_ADMIN,
                            mAdminName);
                    startActivity(intent);
                }
}

19 .checkbox的状态 状态变更的监听器

20 .gps 单态类 , gps wifi 基站
获取系统服务LOCATION_SERVICE  ->locationManager  
记得把权限加到清单文件

21 .广播接受者
有序广播 ->1.一般的有序广播 abortbroadcast()  (-1000~1000)
2.指定了接受者的有序广播setResult();

无序的广播

22. 短信内容的处理
Object[] pdus = (Object[]) intent.getExtras().get("pdus");

// 获取短信的内容
        // #*location*#123456
        Bundle bundle = intent.getExtras();
        // 获取接收到的所有短信的信息
        Object[] pdus = (Object[]) bundle.get("pdus");
        // 遍历接收到的所有短信的信息
        for (Object pdu : pdus) {
            // 获取短信的综合信息
            SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu);
            // 取得短信内容
            String content = sms.getMessageBody();
            Log.i(TAG, "短信内容" + content);
            // 取得短信来源
            String sender = sms.getOriginatingAddress();

复制代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值