分类目录归档:android

android uses-permission

<!– 访问网络 –>
<uses-permission android:name=”android.permission.INTERNET”/>
<!– 写外部存储 –>
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
<!– 进行网络定位 –>
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>
<!– 访问GPS定位–>
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/> <uses-permission android:name=”android.permission.ACCESS_MOCK_LOCATION”/>
<!– 获取运营商信息,用于支持提供运营商信息相关的接口–>
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/>
<!– 访问wifi网络信息,wifi信息可用于进行网络定位–>
<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE”/>
<!– 获取wifi的获取权限,wifi信息可用来进行网络定位–>
<uses-permission android:name=”android.permission.CHANGE_WIFI_STATE”/>
<!– 唤醒CPU –>
<uses-permission android:name=”android.permission.WAKE_LOCK”/>
<!– 控制振动器–>
<uses-permission android:name=”android.permission.VIBRATE”/>
<!– 使用摄像头–>
<uses-permission android:name=”android.permission.CAMERA”/>
<!– 直接拨打电话–>
<uses-permission android:name=”android.permission.CALL_PHONE”/>
<!– 直接发送短信–>
<uses-permission android:name=”android.permission.SEND_SMS”/>
<!– 读取手机当前的状态–>
<uses-permission android:name=”android.permission.READ_PHONE_STATE”/>
<!– 读取手机通讯录–>
<uses-permission android:name=”android.permission.READ_CONTACTS”/>
<!– 写入手机通讯录–>
<uses-permission android:name=”android.permission.WRITE_CONTACTS”/>
<!– 录音–>
<uses-permission android:name=”android.permission.RECORD_AUDIO”/>
<!– 闪光灯–>
<uses-permission android:name=”android.permission.FLASHLIGHT”/>
<!– 读取低级别的系统日志文件–>
<uses-permission android:name=”android.permission.READ_LOGS”/>
<!– 开机启动–>
<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED”/>
<!– 蓝牙账户–>
<uses-permission android:name=”android.permission.BLUETOOTH_ADMIN”/>
<!– 蓝牙–>
<uses-permission android:name=”android.permission.BLUETOOTH”/>
<!– 手机必要要有照相机 且能自动对焦–>
<uses-feature android:name=”android.hardware.camera”/> <uses-feature android:name=”android.hardware.camera.autofocus” android:required=”false”/> <uses-permission android:name=”android.permission.DOWNLOAD_WITHOUT_NOTIFICATION”/>

这些小工具让你的Android开发更高效

本文为作者「Tikitoo」投稿,应该多少受我点影响,Tikitoo也是一位自学的Android工程师,并且完全通过自学找到一份还不错的工作。互联网爱好者,并且是简书专题的运营者,点击「阅读原文」可以跳转到作者的博客。

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效。

1. Vysor

Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用。

2. Vector Asset

Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset;它可以帮助你在Android 项目中添加Material Icon 和SVG 图片来作为一个Drawable 资源来使用。不过唯一一点的缺陷就是没有搜索功能,如果你想精心挑选Material Icon ,可以打来网页版来选择,也可以下载SVG 和Png 格式。对于VectorAsset 的好处,它的文件更小,更容易适配不同的屏幕。

3. Stetho

Stetho 是一个Android 开发调试小工具,它可以让你使用Chrome Develop Tools 来可以来查看Sqlite 数据库和SharePreferences,而且可以查看网络连接的数据。在Chrome 输入框输入「chrome://inspect」,点击inspect 就可以开始了。如果使用OkHttp 需要添加拦截器StethoInterceptor。

4. OctoTree

OctoTree 是一个浏览器插件,它可以让你在Github 看代码时,左边栏会出现一个树状结构,就像我们在IDE 一样。当我们看一个项目的结构,或者想看具体的某个文件,这样就会很方便。

5. Chrome ADB

Chrome ADB 是一个使用Chrome 来调试Android 的小工具,它除了提供了安装,卸载,清理数据的基本功能,而且还提供了主页,返回,锁屏的虚拟键功能,也可以看各个应用占用的内存(不得不点名批评一下微信,关闭都还占用100M 内存,不知道你要干嘛)。它还有Android 的App,两者交互一定更有意思。

6. TinyPng

TinyPng 是一个图片压缩工具,可能有些人感觉这个工具应该给设计师使用,我觉得也是。不过有些时候,设计师给你出了个1920* 1080 的启动页,一张图片,1M 左右,我也是泪奔了,感觉设计师说话的时间,估计我们都压缩完了,自己动手,丰衣足食。而且它还提供了API,对不同语言都还有提供了插件,比如Java 就提供了Maven 的支持。

7. PostMan

PostMan 是一个API 调试工具,它提供Chrome App 和Mac App,除了提供基本的API 测试功能, 它还可以添加各种的Auth 认证,响应结果可以选择不同类型,比如HTML,JSON 等,可以设置通用的Header,还可以将之前测试的添加到一个集合,而且也可以同步到服务器,而且最近还添加了团队服务,想想服务器端写完测试你就能看到结果,而不是给你API 文档(当然API 文档还是要有的),这画面太美,我不敢想象。当然它的功能也远远不止这些,它还有专业版,想尝试更多的东西可以体验一下。

8. Genymotion 虚拟机

刚开始做开发的时候,每次使用官方的虚拟机,都想吐槽一下,但是发现了Genymotion 之后,这一切都变化了,它的速度几乎可以和真机媲美了,当然如果有真机,当然还是推荐使用真机测试。据说官方模拟器2.0 很快,不知道是不是又吹牛逼。

9. Json2POJO

Json2POJO 是可以将一个Json 字符串转换成Java 的POJO 类的网页工具,而且可以选择转换器,比如我们使用Retrofit 可以选择Jackson,Gson,而且可以选择重写get,set 方法,还有hashcode,equals 和toString 方法,可以省去了不少手写的时间。

10. Android Pixel

AndroidPixel 是一个简单的将不同的分辨率的换算工具,只要你有一个尺寸的大小,其他的尺寸大小就可以得出,当然dp 这样的单位,可以解决一部分问题,但是大多还要需要微调,这时AndroidPixel 就起到了作用。这个工具来自上一个公司同事告诉我的。

11. Android Arsenal

Android Arsenal 主要是推荐Github 上一些流行的Android 开源项目,基本上最近热门的Android 开源项目都会出现在这里,它还对不同类库进行了分类。

12. AndroidAssetStudio

Android Asset Studio 是一个在线制作工具,它可以制作Iocn,ActionBar,点9 图等等,简单的操作,大大提高了我们开发的效率。

13. WiFi ADB

WiFi ADB 是一个通过无线网络来使电脑和手机连接的手机App(可以去Google Play 搜索类似的),当我们做测试的时候,只需在手机上打开,电脑只需在命令行输入「adb connect xxx.xxx.xxx.xxx:5555」,电脑可以连接手机,就可以通过无线网络来调试开发的应用。

14. ES Explorer

ES Explorer 是一款文件管理器,但实际它又不仅仅是一款文件管理器,在获得Root 之后,它的功能更强大了,它可以浏览受限制的文件目录;而且提供了一系列小工具,比如下载器;还有集成了众多云储存服务。

微信公众号不支持链接,可以点击「阅读原文」查看。

友情提示:

之前的书籍奖励的两位同学「纪红阳」、「.」,没错,第二个中奖的用户微信名称就是一个点,不知道你们给我回复了收获地址被淹没了还是压根忘记回复了,请加我微信吧「stormzhang」,微信好友已经太多了,其他人一概不加,忘见谅!

 

摘自:http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=402858357&idx=1&sn=5dd38f4dcc5d7680e6daf7b3d1105b63#rd

关于AlertDialog.getWindow().setContentView(view)不能弹出输入法

可以阅读官方文档:http://developer.android.com/reference/android/app/Dialog.html

其中有一段:

Note: Activities provide a facility to manage the creation, saving and restoring of dialogs. See onCreateDialog(int)onPrepareDialog(int, Dialog)showDialog(int), anddismissDialog(int). If these methods are used, getOwnerActivity() will return the Activity that managed this dialog.

Often you will want to have a Dialog display on top of the current input method, because there is no reason for it to accept text. You can do this by setting theWindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM window flag (assuming your Dialog takes input focus, as it the default) with the following code:

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
         WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
这是默认情况下隐藏软键盘的方法,要重新显示软键盘,要执行下面这段代码:

alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

AlertDialog.setView()则不会出现以上问题。

另外:为了防止弹出输入法时把后面的背景挤变形,可以在Manifest里添加:

android:windowSoftInputMode=”adjustPan|stateHidden”

 

安卓中如何实现无限滚动列表

列表和网格是安卓原生应用程序中使用最广泛的两个设计组件。开发者之所以大量使用它们,因为它们虽然实现起来简单明了,但提供了简洁、优良的用户体验。

使用列表和网格的一个基本要求是,当用户向下滚动时可以动态加载数据支持无限滚动。这篇博客将教你如何在自己的应用中实现这个特性。

我们需要的一个主要组件是InfiniteScrollListener类,它实现了OnScrollListener接口。让我们直接看下面这个类的代码实现:

InfiniteScrollListener.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public abstract class InfiniteScrollListener implements AbsListView.OnScrollListener {
    private int bufferItemCount = 10;
    private int currentPage = 0;
    private int itemCount = 0;
    private boolean isLoading = true;
    public InfiniteScrollListener(int bufferItemCount) {
        this.bufferItemCount = bufferItemCount;
    }
    public abstract void loadMore(int page, int totalItemsCount);
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        // Do Nothing
    }
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
    {
        if (totalItemCount < itemCount) {
            this.itemCount = totalItemCount;
            if (totalItemCount == 0) {
                this.isLoading = true; }
        }
        if (isLoading && (totalItemCount > itemCount)) {
            isLoading = false;
            itemCount = totalItemCount;
            currentPage++;
        }
        if (!isLoading && (totalItemCount - visibleItemCount)<=(firstVisibleItem + bufferItemCount)) {
            loadMore(currentPage + 1, totalItemCount);
            isLoading = true;
        }
    }
}

YourActivity.java

1
2
3
4
5
6
7
8
9
// Attach the listener to the AdapterView onCreate
yourListView.setOnScrollListener(new InfiniteScrollListener(5) {
    @Override
    public void loadMore(int page, int totalItemsCount) {
        List<HashMap<String, String>> newData = loader.loadData();
        dataList.addAll(newData);
        adapter.notifyDataSetChanged();
    }
});

如你所见,把这个类声明为抽象类。InfiniteScrollListener包含一个已实现的onScroll方法,但同时定义了一个抽象方法loadMore()——当我们继承这个类的时候需要实现该方法。

当用户滚动列表的时候,安卓运行时环境会自动调用onScroll方法。因为它会被频繁调用,所以建议避免在这个方法中做繁重的处理或者大量资源计算。

为实现无限滚动列表,我们仅需实现InfiniteScrollListener类,并使用ListView的setOnScrollListener()设置。我们可以用一个匿名类实现,就像上面第二段代码展示的那样。

在实现InfiniteScrollListener时,需要实现LoadMore方法。在此方法中我们可以生成想添加到列表中的新条目,然后使用我们适配器的notifyDataSetChanged方法添加上去。你可能要自己生成数据,也可以从数据库或者服务端加载。

这就是安卓中实现无限滚动列表所需要做的全部做工。列表是一种向用户批量展示信息同时又带来不错体验的方法。如果你的应用中已经有ListView或者你打算实现一个,下载我们的Native Ads SDK,它允许在你自己的列表中完全自定义广告。不过10分钟,在不影响用户体验的情况下,应用就可以为你赚更多的钱了。可以从这里检出代码。

直接拿来用!最火的Android开源项目(一)

http://www.csdn.net/article/2013-05-03/2815127-android-open-source-projects

摘要:对于开发者而言,了解当下比较流行的开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。为此,CSDN特整理了GitHub上最受欢迎的Android及iOS开源项目,本文详细介绍了20个Android开源项目。

GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上。更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。为此,CSDN特整理了在GitHub平台上最受欢迎的Android及iOS开源项目,以飨开发者。

下面,就让我们一起来看看,在GitHub平台上,究竟有哪些Android开源项目最火,也最受开发者欢迎。

1. ActionBarSherlock

ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式。

对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局。能够让开发者轻松开发一款带动作栏(Action bar)的应用,并且适用于Android 2.x及其以上所有版本。

详情请参考:ActionBarSherlock

2. facebook-android-sdk

Facebook SDK for Android是一个开源库,允许开发者将Facebook集成到所开发的Android应用中。

如果想要获取更多关于示例、文档、将SDK集成到App中、源代码等信息,可直接登陆Facebook Developers查看。

3. SlidingMenuSlidingMenu Demos

SlidingMenu是一个开源的Android库,能够让开发者轻松开发一款应用,实现类似于Google+、Youtube和Facebook应用中非常流行的滑动式菜单。

  

使用SlidingMenu的Android应用:

 

 

4. cocos2d-x

在移动开发领域,将Cocos2D-X用于主流iOS/Android游戏开发的公司、开发团队多不胜数。cocos2d-x是一个开源的支持多平台的2D游戏框架,使用C++开发,基于cocos2d-iphone,在MIT许可证下发布。主分支在GitHub上使用OpenGL ES 2.0渲染,而旧版gles11分支则使用OpenGL ES 1.1渲染。

支持iOS、Android、Windows Phone 8、Bada、BlackBerry、Marmalade、Windows、Linux等多个平台。支持C++、Lua、JavaScript编程语言。

5. android

GitHub Android App是GitHub开源的Android客户端,支持Issues、Gists,并集成了新闻Feed,能够让你及时跟进组织及关注的开发者、库等。同时,该应用还提供了一个用户快速访问你所创建、监控及发布issue的面板,可查看并将问题加入到收藏夹,可对标签、里程碑和任务进行过滤配置。

android资源库包含了GitHub Android App的所有源代码。

6. Android-ViewPagerIndicator

ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面。

兼容Android支持库的ViewPager及ActionBarSherlock,最初是基于Patrik Åkerfeldt的ViewFlow,开发者可以直接登陆Google Play下载该项目的演示应用。

7. MonoGame

MonoGame是一个Microsoft XNA 4.x Framework的开源跨平台实现。用于让XNA开发者将他们在Xbox 360、Windows & Windows Phone上开发的游戏移植到iOS、Android、Mac OS X、Linux及Windows 8 Metro上,目前,PlayStation Mobile & Raspberry PI的开发正在进行中。

详情请参考:MonoGame

8. Android-PullToRefresh

该项目用于为Android提供一个可重用的下拉刷新部件。它最初来源于Johan Nilsson的库(主要是图形、字符串和动画),但这些后来都已被取代。

9. android-async-http

android-async-http是Android上的一个异步、基于回调的HTTP客户端开发包,建立在Apache的HttpClient库上。

10. Android-Universal-Image-Loader

Android上最让人头疼的莫过于从网络获取图片、显示、回收,任何一个环节有问题都可能直接OOM,这个项目或许能帮到你。

Universal Image Loader for Android的目的是为了实现异步的网络图片加载、缓存及显示,支持多线程异步加载。它最初来源于Fedor Vlasov的项目,且自此之后,经过大规模的重构和改进。

11. GreenDroid

GreenDroid最初是由Cyril Mottier发起,是一个Android的UI开发类库,能够让UI开发更加简便,并且在应用中始终保持一致。

详情请参考:Cyril Mottier’s Blog

12. Anki-Android

AnkiDroid是一个免费、开源的Android的闪存应用,可直接从Google Play进行下载。

详情请参考:ankidroid

13. android-actionbar

Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式。在大多数的情况下,当开发者需要突出展现用户行为或在全局导航的activity中使用action bar,因为action bar能够使应用程序给用户提供一致的界面,且系统能够很好地根据不同的屏幕配置来适应操作栏的外观。

Action bar的主要目的:

 

  • 提供一个用于识别应用程序的标示和用户的位置的专用空间。
  • 在不同的应用程序之间提供一致的导航和视觉体验。
  • 突出Activity的关键操作,并且在可预见的方法内给用户提供快捷的访问。

 

14. android-viewflow

android-viewflow是Android平台上的一个视图切换的效果库,ViewFlow相当于Android UI部件提供水平滚动的ViewGroup,使用Adapter进行条目绑定。

 

15. android-mapviewballoons

当使用Android地图外部库(com.google.android.maps)时,android-mapviewballoons会提供一个简单的方式来对地图覆盖进行标注,就是一个简单的信息气泡。

它由BalloonOverlayView组成,是一个代表显示你的MapView及BalloonItemizedOverlay的气泡的视图,BalloonItemizedOverlay是ItemizedOverlay的一个抽象扩展。

16. PushSharp

一个向iOS(iPhone/iPad APNS)、Android(C2DM和GCM)、Windows Phone和Windows 8设备发送推送通知的服务器端库。

17. androidannotations

Android Annotations是一个开源的框架,用于加速 Android应用的开发,可以让你把重点放在功能的实现上,简化了代码,提升了可维护性。

18. HockeyKit

Hockey是一个iOS Ad-Hoc自动更新框架。苹果App Store中的所有App都可以使用它,它能够显著地提高Beta测试的整个过程,分为两部分:服务器和客户端框架。服务器组件需要所有脚本,但在没有客户端库的情况下,也可以单独工作。它提供一个Web接口,Beta测试者可以使用它来安装最新的AdHoc配置文件,也可以直接在设备上通过Safari安装最新的Beta版本。

 

  • 只需在服务器上安装一次服务端,就可以处理包标识符不同的多个应用程序(有开发者强烈建议对Debug、AdHoc Beta和AppStore发布版使用不同的包标识符)。
  • 默认当App启动或唤醒时,客户端会从服务器检测更新,用户可以在设置对话框中进行修改:一天一次或手动检查更新。
  • 除了支持iOS,HokeyKit也支持Android平台,不过Android版还处在Alpha阶段,支持OTA及应用内更新。
  • 为HockeyKit用户提供服务器托管服务。

 

19. android-menudrawer

Android上的菜单展示风格各异,其中用得最多且体验最好的莫过于左右滑动来显示隐藏的菜单,android-menudrawer是一个滑动式菜单实现,允许用户在应用当中实现无缝导航。该项目具有多种菜单展示效果,其中最常见的就是通过屏幕边缘拖动或点击动作栏的“向上”按钮显示。

 

实现功能:

 

  • 菜单可以沿着四个边放置。
  • 支持附加一个始终可见、不可拖动的菜单。
  • 菜单的内容和整个窗口都可以隐藏。
  • 可用于XML布局。
  • 显示当前可见屏幕的指示器。

 

20. android-flip

Aphid FlipView是一个能够实现Flipboard翻页效果的UI组件。

以上为GitHub上最受欢迎的Android开源项目TOP20,敬请期待“GitHub上最受欢迎的Android开源项目(二)”。