Android开发Tips

jopen 8年前
   <blockquote>     <p>欢迎Follow我的<a href="/misc/goto?guid=4959652813041333444" target="_blank">GitHub</a>, 关注我的<a href="/misc/goto?guid=4959652813131126148" target="_blank">简书</a>.</p>    </blockquote>    <p>介绍一些, 在Android开发中, 会经常使用的小知识点.</p>    <div class="image-package" href="https://simg.open-open.com/show/0b107f5a380e9f0936a64860ecf7c8ef.jpg">    <img src="https://simg.open-open.com/show/0b107f5a380e9f0936a64860ecf7c8ef.jpg" width="660" height="387" data-original-src="https://simg.open-open.com/show/c50136a5d1985288024b5c55bdc79205.jpg" />     <br />     <div class="image-caption">     Android     </div>    </div>    <h2>1. Download文件夹</h2>    <p>绝对路径</p>    <pre class="brush:java; toolbar: true; auto-links: false;">/storage/emulated/0/Download/xxx</pre>    <p>遍历</p>    <pre class="brush:java; toolbar: true; auto-links: false;">        File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);         File[] files = file.listFiles();         for (int i = 0; i < files.length; ++i) {             Log.e(TAG, files[i].getAbsolutePath());         }</pre>    <h2>2. ButterKnife多参数</h2>    <p>绑定多个参数</p>    <pre class="brush:java; toolbar: true; auto-links: false;">    @OnClick({             R.id.dialog_dau_share_wx,             R.id.dialog_dau_share_wx_timeline,             R.id.dialog_dau_share_weibo,             R.id.dialog_dau_share_qq     })</pre>    <h2>3. submodule的使用方法</h2>    <p>submodule与git可以保持实时同步.<br /> 添加</p>    <pre class="brush:java; toolbar: true; auto-links: false;">git submodule add https://github.com/SpikeKing/DroidPlugin.git DroidPlugin</pre>    <p>使用</p>    <pre class="brush:java; toolbar: true; auto-links: false;">git submodule update --init --recursive</pre>    <p>导入, 路径多于一个, 前面不添加冒号(:).</p>    <pre class="brush:java; toolbar: true; auto-links: false;">include ':app', 'DroidPlugin:project:Libraries:DroidPlugin'</pre>    <p>引用</p>    <pre class="brush:java; toolbar: true; auto-links: false;">compile project(':DroidPlugin:project:Libraries:DroidPlugin')</pre>    <h2>4. 更新Github的Fork库</h2>    <p><a href="/misc/goto?guid=4959653517403310014" target="_blank">参考</a></p>    <h2>5. 检测App是否安装</h2>    <p>使用PackageManager.</p>    <pre class="brush:java; toolbar: true; auto-links: false;">// 检查App是否安装 private boolean appInstalledOrNot(String uri) {     PackageManager pm = getPackageManager();     boolean app_installed;     try {         pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);         app_installed = true;     } catch (PackageManager.NameNotFoundException e) {         app_installed = false;     }     return app_installed; }</pre>    <h2>6. Canvas重绘</h2>    <p><a href="/misc/goto?guid=4959653517493633276" target="_blank">invalidate()</a>. <a href="/misc/goto?guid=4959653517577236441" target="_blank">参考</a>.</p>    <h2>7. 按钮的默认点击效果</h2>    <p>波纹效果(5.0+), 阴影效果(5.0-).</p>    <pre class="brush:java; toolbar: true; auto-links: false;">android:background="?android:attr/selectableItemBackground"</pre>    <p>继承样式</p>    <pre class="brush:java; toolbar: true; auto-links: false;">    <!--按钮-->     <style name="PersonInfoButton" parent="@android:style/ButtonBar">         <item name="android:layout_width">@dimen/d80dp</item>         <item name="android:layout_height">@dimen/d32dp</item>         <item name="android:textSize">@dimen/d14sp</item>     </style></pre>    <blockquote>     <p>注意: @android:style/ButtonBar</p>    </blockquote>    <h2>8. Proguard去除Log信息</h2>    <p>默认删除log.i, .v, 可以指定删除.d, .e. <a href="/misc/goto?guid=4959653517662834174" target="_blank">参考</a>.</p>    <pre class="brush:java; toolbar: true; auto-links: false;"># 删除Log -assumenosideeffects class android.util.Log { *; } -assumenosideeffects class android.util.Log {     public static *** d(...);     public static *** e(...); }</pre>    <h2>9. 简化数据库的使用</h2>    <p>在使用数据库时, 操作有些复杂, Sugar库简化使用方法. <a href="/misc/goto?guid=4958848076971018590" target="_blank">参考</a>.</p>    <pre class="brush:java; toolbar: true; auto-links: false;">compile 'com.github.satyan:sugar:1.3'</pre>    <h2>10. 点击被填充链接的EditView.</h2>    <p>通过在结尾处添加一个不占位的空格("\u200B").</p>    <pre class="brush:java; toolbar: true; auto-links: false;">    // 设置可以点击和编辑的EditText     private void setEditClickable() {         mEtEditText.setMovementMethod(LinkMovementMethod.getInstance());         Spannable spannable = new SpannableString("http://www.baidu.com");         Linkify.addLinks(spannable, Linkify.WEB_URLS);          // 添加了零宽度空格(​\u200B​​​), 才可以点击到最后的位置, 否则会触发链接         CharSequence text = TextUtils.concat(spannable, "\u200B");          mEtEditText.setText(text);     }</pre>    <p>OK. That's all!</p>    <p>来自: <a href="/misc/goto?guid=4959653517774516558" rel="nofollow" target="_blank">http://www.jianshu.com/p/6b663027c371</a></p>