1 1.    理解 application的图标 和 桌面activity的图标
  2 <application
  3        //在设置→应用程序→管理应用程序 里面列出的图标
  4         android:icon="@drawable/icon5"
  5         //在设置→应用程序→管理应用程序 里面列出的名字
  6         android:label="@string/app_name"
  7         android:theme="@style/AppTheme" >
  8         <activity
  9             android:name=".ui.SplashActivity"
 10             //在手机桌面上生成的图标
 11             android:icon="@drawable/icon5"
 12             //在手机桌面上生成的名字
 13             android:label="@string/app_name" >
 14             <intent-filter>
 15                 <action android:name="android.intent.action.MAIN" />
 16
 17                 <category android:name="android.intent.category.LAUNCHER" />
 18             </intent-filter>
 19         </activity>
 20         </application>
 21 在清单文件中对应的节点配置.
 22 2.    Splash全屏显示
 23 // 取消标题栏
 24 requestWindowFeature(Window.FEATURE_NO_TITLE);
 25 // 完成窗体的全屏显示 // 取消掉状态栏
 26     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 27                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
 28 Ps: 也可以通过主题设置窗体全屏显示
 29   android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
 30
 31 3.    pull解析xml
 32 /**
 33      * 把person.xml的输入流 解析 转化成list集合
 34      * @param filename  assets目录下的文件名
 35      * @return
 36      */
 37     public List<Person> getPersons(String filename){
 38         AssetManager manager = context.getAssets();
 39         try {
 40             InputStream  is = manager.open(filename);
 41             //在android下使用pull解析xml文件
 42             //1.获取pull解析器的实例
 43             XmlPullParser  parser = Xml.newPullParser();
 44             //2.设置解析器的一些参数
 45             parser.setInput(is, "utf-8");
 46             // 获取pull解析器对应的事件类型
 47             int type = parser.getEventType();
 48             Person person = null;
 49             List<Person> persons = new ArrayList<Person>();
 50             while(type!=XmlPullParser.END_DOCUMENT){
 51
 52                 if(type==XmlPullParser.START_TAG){
 53                     if("person".equals(parser.getName())){
 54                         person = new Person();
 55                         int id =Integer.parseInt( parser.getAttributeValue(0));
 56                         person.setId(id);
 57                     }else if("name".equals(parser.getName())){
 58                         String name = parser.nextText();
 59                         person.setName(name);
 60                     }else if("age".equals(parser.getName())){
 61                         int age = Integer.parseInt( parser.nextText());
 62                         person.setAge(age);
 63                     }
 64                 }
 65                 if(type==XmlPullParser.END_TAG){
 66                     if("person".equals(parser.getName())){
 67                         persons.add(person);
 68                         person = null;
 69                     }
 70                 }
 71
 72
 73                  type = parser.next();
 74             }
 75
 76             return persons;
 77
 78
 79         } catch (Exception e) {
 80             e.printStackTrace();
 81             Toast.makeText(context, "获取person.xml失败", Toast.LENGTH_SHORT).show();
 82             return null;
 83         }
 84     }
 85 4.    URL httpUrlConnection
 86 public UpdateInfo getUpdataInfo(int urlid) throws Exception {
 87 String path = context.getResources().getString(urlid);
 88         URL url = new URL(path);//将路径解析成url
 89         HttpURLConnection conn = (HttpURLConnection) url.openConnection();//打开连接
 90         conn.setConnectTimeout(2000);//设置超时时间
 91         conn.setRequestMethod("GET");//设置请求方法
 92         InputStream is = conn.getInputStream();//获取返回的流
 93         //pull解析器解析
 94         XmlPullParser parser = Xml.newPullParser();
 95         UpdateInfo info = new UpdateInfo();
 96         parser.setInput(is, "utf-8");
 97         int type = parser.getEventType();
 98
 99         while (type!=XmlPullParser.END_DOCUMENT) {
100             switch (type) {
101             case XmlPullParser.START_TAG:
102                 if ("version".equals(parser.getName())) {
103                     info.setVersion(parser.nextText());
104                 }else if ("description".equals(parser.getName())) {
105                     info.setDescription(parser.nextText());
106                 }else if ("apkurl".equals(parser.getName())) {
107                     info.setApkurl(parser.nextText());
108                 }
109                 break;
110
111             }
112             type = parser.next();
113
114         }
115         return info;
116
117     }
118     }
119
120 5.    获取当前客户端版本号
121 PackageInfo info = getPackageManager().getPackageInfo(
122                     getPackageName(), 0);
123             return info.versionName;
124
125 6.    安装新的apk
126 激活系统的安装的组件 intent();
127 设置数据 和数据的类型
128 setDataAndType();
129 setData();
130 setType();
131
132 private void install(File file){
133         Intent intent=new Intent();
134         intent.setAction(Intent.ACTION_VIEW);//显示指定数据
135         intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
136         this.finish();
137         startActivity(intent);
138
139     }
140
141 7.    对话框 创建 AlertDialog.buidler
142 Builder.create().show();
143
144 8.    Handler message 子线程里面通知主线程ui更新
145 private TextView tv;
146     //1 .创建出来handler 要求必须在主线程里面创建
147     private Handler handler = new Handler(){
148
149         // 主线程处理消息 调用的方法
150         @Override
151         public void handleMessage(Message msg) {
152             int count  = (Integer) msg.obj;
153             tv.setText("当前条目为 "+ count);
154             super.handleMessage(msg);
155         }
156
157
158     };
159
160
161
162     @Override
163     public void onCreate(Bundle savedInstanceState) {
164         super.onCreate(savedInstanceState);
165         setContentView(R.layout.main);
166         tv = (TextView) this.findViewById(R.id.tv);
167
168         //每隔2秒钟更新一下 tv的内容
169         new Thread(){
170
171             @Override
172             public void run() {
173                 for(int i = 0;i<100;i++){
174         /*            tv.setText("当前为"+ i);*/
175                     try {
176                         sleep(500);
177                     } catch (InterruptedException e) {
178                         e.printStackTrace();
179                     }
180                     Message msg = new Message();
181                     msg.obj = i;
182                     handler.sendMessage(msg);
183
184                 }
185                 super.run();
186             }
187         }.start();
188
189     }
190
191 9.    GridView ListView  adapter  - > BaseAdapter
192 //将一个XML文件转化成一个view对象
193 View view=View.inflate(context, R.layout.mainscreen_item, null);
194
195 10.    Xml ->定义一个背景颜色  shape  (参考api文件)
196
197
198 11.    Xml -> selector 颜色选择器 根据当前控件的状态显示不同颜色.
199
200 12.    Sharedpreference 的使用
201 Sp.edit(); -> Editor editor
202 Editor.put()…
203 Editor.commit(); // 真正的提交数据
204
205 13.    自定义对话框的写法
206 定义一个样式文件 重写了系统的一些默认配置
207 name="android:windowBackground">@drawable/title_background
208 name="android:windowNoTitle">true</item>
209
210 dialog = new Dialog(this, R.style.MyDialog);//R.style.MyDialog 是自定义的一个xml文件
211         dialog.setCancelable(false);
212
213         View view = View.inflate(this, R.layout.normal_entry_dialog, null);
214         et_pwd = (EditText) view.findViewById(R.id.et_normal_entry_pwd);
215         Button bt_normal_ok = (Button) view
216                 .findViewById(R.id.bt_normal_dialog_ok);
217         Button bt_normal_cancel = (Button) view
218                 .findViewById(R.id.bt_normal_dialog_cancel);
219         bt_normal_ok.setOnClickListener(this);
220         bt_normal_cancel.setOnClickListener(this);
221         dialog.setContentView(view);
222         dialog.show();
223
224
225
226 14.    Md5的编码和加密 (不可逆的加密算法)
227
228
229 15.    style的使用
230 可以把一些常用的样式定义为style,重复使用。
231 然后style="@style/text_content_style" 直接引用
232
233 16.    更改activity切换的动画效果
234 overridePendingTransition(R.anim.alpha_in, R.anim.alpha_out);
235
236 17.    获取新打开的activity的返回值
237 StartactivityforResult();
238 SetResultData();
239
240 OnActivityResult();
241
242
243 18.    DeviceAdmin的技术 2.2版本支持 -> wipedata() setpwd();
244 不能直接被卸载 在设备管理器里面取消激活 ;
245 主要步骤如下:
246 deviceadmin步骤
247 (1).创建 MyAdmin 的广播接受者 继承 DeviceAdminReceiver
248
249         <receiver android:name=".MyAdmin">
250             <meta-data android:name="android.app.device_admin"
251                 android:resource="@xml/my_admin" />
252             <intent-filter>
253                 <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
254             </intent-filter>
255         </receiver>
256
257
258 my_admin.xml
259
260 <?xml version="1.0" encoding="utf-8"?>
261 <device-admin xmlns:android="http://schemas.android.com/apk/res/android">
262         <uses-policies>
263                 <limit-password />
264                 <watch-login />
265                 <reset-password />
266                 <force-lock />
267                 <wipe-data />
268         </uses-policies>
269 </device-admin>
270
271 (2).获取IDevicePolicyManager
272
273
274
275 Method method = Class.forName("android.os.ServiceManager")
276                     .getMethod("getService", String.class);
277 IBinder binder = (IBinder) method.invoke(null,
278                     new Object[] { Context.DEVICE_POLICY_SERVICE });
279 mService = IDevicePolicyManager.Stub.asInterface(binder);
280
281 (3).注册广播接受者为admin设备
282 ComponentName mAdminName = new ComponentName(this, MyAdmin.class);
283 if (mService != null) {
284         if (!mService.isAdminActive(mAdminName)) {
285                     Intent intent = new Intent(
286                     DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
287                     intent.putExtra                (DevicePolicyManager.EXTRA_DEVICE_ADMIN,
288                             mAdminName);
289                     startActivity(intent);
290                 }
291 }
292
293 19 .checkbox的状态 状态变更的监听器
294
295 20 .gps 单态类 , gps wifi 基站
296 获取系统服务LOCATION_SERVICE  ->locationManager
297 记得把权限加到清单文件
298
299 21 .广播接受者
300 有序广播 ->1.一般的有序广播 abortbroadcast()  (-1000~1000)
301 2.指定了接受者的有序广播setResult();
302
303 无序的广播
304
305 22. 短信内容的处理
306 Object[] pdus = (Object[]) intent.getExtras().get("pdus");
307
308 // 获取短信的内容
309         // #*location*#123456
310         Bundle bundle = intent.getExtras();
311         // 获取接收到的所有短信的信息
312         Object[] pdus = (Object[]) bundle.get("pdus");
313         // 遍历接收到的所有短信的信息
314         for (Object pdu : pdus) {
315             // 获取短信的综合信息
316             SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu);
317             // 取得短信内容
318             String content = sms.getMessageBody();
319             Log.i(TAG, "短信内容" + content);
320             // 取得短信来源
321             String sender = sms.getOriginatingAddress();

最近学习安卓中总结的一些知识点相关推荐

  1. 记录在学习python中易混淆的知识点

    这里写目录标题 列表 元组 Python中的*args和**kwargs 具有两个以上维度的数据帧切片 列表 访问列表中的列表元素: list = [123,['hello','world'],456 ...

  2. 我是如何学习安卓开发的

    我的安卓学习之路 我的安卓之路主要有四个阶段: 入门 实践 准备面试 工作 1.入门 2014 年,学习 MFC 中途放弃的我,偶然间看到 Mars 前辈的安卓视频,看了几天写了个简单的应用,觉得安卓 ...

  3. 学 android需要什么基础,学习安卓开发需要什么基础?

    学习程序开发一般都需要懂一些一定的C语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程.当然学习安卓程序开发除了懂C语言之外,还需要掌握一定的Java基础知识.Linux基础知识 ...

  4. 两个多月学习安卓的心得,给新手一点建议

    大三暑假只是稍微看了看第一行代码,算不上学习安卓.真正开始学习是从2017.9.15开始,到现在2017/12/7,从一个啥都不会的菜鸡到现在会了一点点东西的菜鸡. 1.做的app很少. 先对着网上代 ...

  5. 如何学习安卓软件开发

    如何学习安卓软件开发?(转自知乎) 分类: Android2013-11-24 11:37 211人阅读 评论(0) 收藏 举报 android开发 我的话:学习一个新东西,找对方法很重要,在将近一周 ...

  6. python100个必背知识-python编程面试中必考的知识点,数据类型全解,笔记超全面...

    原标题:python编程面试中必考的知识点,数据类型全解,笔记超全面 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于 ...

  7. python面试必考知识点_python编程面试中必考的知识点,数据类型全解,笔记超全面...

    原标题:python编程面试中必考的知识点,数据类型全解,笔记超全面 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于 ...

  8. 学习安卓的简单心得,以及LinearLayout的简单使用

    安卓的简单心得 本人觉得在学习安卓移动开发课程的这段时间真的是太水,所以就自己去网上找了教程,并且以写博文的形式去激励自己去学好这门课. 本人学习安卓这门课用的开发工具是Android Studio. ...

  9. 关于自己学习安卓的体会

    笔者学习了一段时间的安卓,有几个特别深的感触. 第一点.安卓开发虽然用的是JAVA语言(虽然有Kotlin但是笔者还没接触到),但是在大部分的开发过程中,基本都是重写各种类,自己写的东西比较少(这只是 ...

  10. Kotlin学习安卓篇(一)为什么要学习Kotlin?

    一.学前问题 1.Kotlin的身世背景?它是干什么的? 2.Kotlin和Java比较如何?优缺点?相似度?为什么很多大厂都使用它? 3.Android开发是否要掌握Java和Kotlin? 4.对 ...

最新文章

  1. PHP面试中常见的字符串与文件操作题目
  2. docker 启动容器_crontab入门二:定时启动docker容器并启动容器内部脚本
  3. VMware Skyline
  4. 全局变量-函数内部不允许修改局部变量的值
  5. leetcode 650. 2 Keys Keyboard | 650. 只有两个键的键盘(暴力递归->傻缓存->DP)
  6. Angular Component的DOM级别的单元测试方法
  7. Windows用户安全小技巧
  8. LeetCode 141. 环形链表
  9. 语文高考识记现代汉字的字形【转】
  10. imread函数_MATLAB图像处理:27:使用imtranslate函数平移图像
  11. Ubuntu 环境初始化
  12. MSRA被曝停招国防七子及北邮学生
  13. EF6.0新特性-DbCommandInterceptor实现非SQL端读写分离
  14. python笔记之中缀语法和管道实现
  15. lv官网编码查询_图文讲解,如何免费自主查询商标近似情况
  16. 使用Java写入Excel下拉选择框选项过多不显示问题
  17. 【Spring Web教程】SpringBoot 整合SpringFox-SwaggerUI 3
  18. Java将被取代?大数据让你知道真实的Java应用现况
  19. 群发短信 发短信(带图片)
  20. Apk应用安全加固所需了解的Application启动流程

热门文章

  1. Contains的使用,一点经验
  2. 发布一个平滑进度条控件
  3. Java基础002 Java9开发环境搭建(Win10平台)
  4. CSS基础part1
  5. Scala编程实例:使用List和Tuple
  6. 万能数据库查询分析器 5.05发布,本人为之撰写的相关技术文章达65篇
  7. 不使用随机数的洗牌算法
  8. wordpress and theme
  9. 树形目录生成器.bat
  10. c语言秒表编程示例,求大神帮忙写一篇简单的C语言秒表程序, 谢谢。