2015/11/18 10:11:21

Wifi服务

  • WifiManager
  • Context.WIFI_SERVICE
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

方法

  • isWifiEnable 判断wifi是否开启
  • setWifiEnable 可以设置wifi开启or关闭
  • getConnectionInfo 可以获取mac地址、连接速率等信息
  • getScanResults 可以获取扫描到的wifi

2015/11/19 15:46:37

常用的Action

  • 程序的开始(Intent.Action_MAIN)

    android.intent.action.MAIN
    
  • 拨号界面 (Intent.Action_DIAL)

    action.intent.action.DIAL
    
  • 网络状态变化(广播)

    android.net.conn.CONNECTIVITY_CHANGE
    
  • 跟根据用户数据打开相应界面(Intent.ACTION_VIEW)

    android.intent.action.VIEW
    
    Uri uri = Uri.parse("http://www.google.com"); //浏览器 
    Uri uri =Uri.parse("tel:1232333"); //拨号程序 
    Uri uri=Uri.parse("geo:39.899533,116.036476"); //打开地图定位 
    Intent it = new Intent(Intent.ACTION_VIEW,uri); 
    startActivity(it); 
    

2015/11/23 15:06:37

一些学习Android开发的网站

2015/11/23 11:21:35

图片压缩工具

图片在线压缩

2015/11/23 11:25:28

抓包工具

Fiddler

2015/11/23 15:08:49

在线markdown

Markdown简历

2015/11/23 16:27:39

Maven找Gradle支持库

Maven

2015/11/24 9:31:26

鲜明的颜色

Colorhunt

2015/11/24 9:32:34

Android studio快捷键

Android studio快捷键

2015/11/24 9:33:23

电脑控制手机

2015/11/24 9:43:17

Android图标库

2015/11/3 18:39:19

项目架构

  • 通用包common 包括工具包、实体包、控件包、网络包、数据库包等

    • Utils(AES、Toast封装、Log的封装)
    • Views(各种自定义View)
    • Entities(各种实体类)
    • BroadcastReceiver(带接口的广播)
    • Network(protocol协议包、各种网络请求接口)
    • Database(数据库)

  • 模块包(每个模块单独成包)

  • 全局包base(Application)

Token 识别用户、连接服务器时需要token

服务端:
用户数据库、服务器API程序

客户端:
app
sdk

2015/10/30 15:42:14

Activity启动模式

  • Standard:每次跳一个Activity都在栈中创建一个实例。
  • SingleTop:当前Activity跳当前Activity不创建实例。
  • SingleTask:如果待跳的Activity已存在栈中,则把待跳Activity之前的所有Activity弹出。
  • SingleInstance:新建一个任务栈,该任务栈只有一个Activity。

    四大模式参考

2015/11/24 9:13:21

2015/10/29 15:31:44

Volley的基础

compile 'com.mcxiaoke.volley:library:1.0.19'
  1. Volley有get 、post等方式请求数据。
  2. Volley可以建立、取消请求队列。
  3. 把请求加入请求队列即可完成请求。

作用:

  • 封装网络请求类,使请求代码量减少。
  • 大大提高性能(反正很厉害就对了)。

使用示例:

1. RequestQueue queue = Volley.newRequestQueue(context)//创建一个队列
2. StringRequest jr  = new StringRequest(请求方式get/post,请求url,成功监听器,失败监听器)//创建一种请求方式
3. queue.add(jr);//加入到队列

Read More

  • 如何检测手机内装了什么APP?

    相关类

    • PackageManager
    • ApplicationInfo
    • ResolveInfo
    • ApplicationInfo与ResolveInfo区别:
      前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label。
      前者得到的Label 包括Server、provider等。

      1.PackageManager 获取手机中所有应用的包的信息。通过getPackageManager()方法得到。
      2.ApplicationInfo 通过配置文件里标签 得到应用的信息。
      3.ResolveInfo 通过配置文件里的标签 得到应用的信息。

Read More

2015-10-03 14:53:24

自定义Notification

  • 由于getNotificatoin()方法已经过时,因此要实现Notification就用Notification.Builder()的build方法。
  • 通常Notification的用法如下:

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Notification notification = new Notification.Builder(SettingActivity.this)
            .setContentTitle("版本更新")//设置标题
            .setSmallIcon(R.mipmap.ic_launcher)//图标
            .setContentInfo("GDPC")//设置右边的小提示
            .setAutoCancel(false) // 设置点击取消(貌似无效)
            .setTicker("有新版本了") //状态栏显示收到的消息
            .setDefaults(Notification.DEFAULT_VIBRATE)//设置震动
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) //设置声音
            .build();
    manager.notify(0,notification); // 发送通知
    

Read More

2015-10-02 15:42:03

版本更新开发

思路:
1.创建一个AlertDialog.builder对象,设置相关的参数。
2.通常情况下,通过setPositiveButton跟setNegativeButton方法设置监听。下面贴两段代码,其效果的不同。

代码一:

builder.setPositiveButton("确定",new OnClickListener(){.....});

代码二:

builder.setPositiveButton("确定",null);
.
.
.
.
AlertDialog dialog = builder.create();
dialog.show();
dialog.getButton(AlertDialog.POSITIVEBUTTON).setonClickListener(new .....);      

Read More

2015/11/18 9:34:20

Fragment知识点总结

定义Fragment的方式

  • 动态
  • 静态

区别

  • 在主布局文件中定义不同

主Activity必须继承FragmentActivity

  • 静态:主布局文件里定义 一个fragment控件

  • 动态:主布局文件里定义一个布局(用来装Fragment的容器),例如LinearLayout

应用

  • 标题栏通常用静态定义、 内容通常用动态定义

动态:

  1. 创建一个xml布局文件,里面包含Fragment要显示的控件
  2. 创建一个java文件 继承Fragment(导入V4包),重写onCreateView方法
    (所有控件都在这使用,MainActivity就用来调用Fragment),加载上述xml文件
    最后返回view,而不是返回之前的布局

  3. Activity布局文件 创建一个LinearLayout,设置ID,用于装载Fragment,name属性是上述文件的路径名

  4. MainActivity文件里

A.通过getSupportFragmentManager()方法获得一个FragmentManager  
B.用manager对象 通过beginTransaction方法开启事务,返回FragmentTransaction对象  
C.创建一个MyFragment对象  MyFragment mFragment= new MyFragment(); (必须判断是否为空)  
D.利用事务对象 跟上述定义个布局加载该Fragment transaction.add(Activity里布局的id,Fragment对象)  
E.提交事务 transaction.commit();

静态:

定义好java文件,然后在主布局文件里 创建fragment控件即可,name属性是该java文件的路径名

如何取得fragment里的控件?

  1. 在写好的java文件里 重写onActivityCreated
  2. 通过getActivity()方法获得上下文

2015/11/18 9:40:21

关于Fragment的回退栈

  1. 只要加入到回退栈就能回退,主显示Fragment不回退
    addToBackTrack(null)

  2. 事务的replace 会删除数据,若要保存上个Fragment的数据 ,先隐藏hide,再添加add

  3. 调用getFragmentManager.popBackStack()方法 可以返回上一个Fragment

2015/11/18 9:41:09

Fragment之间通信

通过getActivity()方法获取Fragment对应Activity里的控件的ID。

2015/11/18 9:41:32

Fragment 切换、嵌套则会报错

Duplicate id 0x7f0c0069, tag null, or parent id 0x0 with another fragment for gdpc.erintrus.bnj_project.TitleFoundFragment

解决方法:
onCreateView下面使用下列代码

if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent(); 
if (parent != null)
parent.removeView(view); 
}else{
    //数据初始化
view = inflater(R.layout.xx,container,false);
}

return view;

2015/11/18 9:43:31

Activity传值给Fragment

方法一

  1. 在Activity中定义一个字段,生成get、set方法
  2. 在Fragment中通过get方法获取

    private String mTitle;
    public String getmTitle() {
    return mTitle;
    }
    
    public void setmTitle(String title) {
    this.mTitle = title;
    }
    ((DemoActivity)getActivity()).getmTitle();
    

方法二

  • 通过构造函数传递值

2015/11/18 9:46:37

Activity与 ViewPager 里Fragment的交互

  1. 在创建Fragment的Adapter里 获取该Fragment的控件
  2. 通过Fragment实例的getView和findViewById获取控件
TextView tv = (TextView) introductionFragment.getView().findViewById(R.id.tvIntroductionContent); 
tv.setText(schoolBasicInfo.getIntroduct());

.参考TrainingAgencyAdapter

2015-09-30 18:00:19

shape改变控件的背景

shape自定义控件形状,改变背景就无效了

标签为shape
主要子标签:solid(填充颜色)、stroke(描边)、corners(弧度)、gradient(渐变)、size(大小、可以设置成圆)
solid:主要属性 color填充整个控件的颜色
stroke:主要属性color 设置描边的颜色、width=”3dip” 设置描边大小
corners:主要属性radius 设置弧度
size:主要属性width、height 设置宽高,相同为圆
gradient:主要属性是startcolor endcolor

Read More