<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hello_12413的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hello_12413</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hello_12413]]></copyright><item><title><![CDATA[Android 使用 ToneGenerator 实现按键提示音]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/133999751</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/133999751</guid><author>hello_12413</author><pubDate>Mon, 23 Oct 2023 21:56:24 +0800</pubDate><description><![CDATA[【代码】Android 使用 ToneGenerator 实现按键提示音。]]></description><category></category></item><item><title><![CDATA[JS&Java 交互 报错 JavaException was raised during method Invocation]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/90439402</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/90439402</guid><author>hello_12413</author><pubDate>Wed, 22 May 2019 10:45:20 +0800</pubDate><description><![CDATA[如上图所示当JS调用本地方法时报错，原因让人很容易忽略。在与JS交互的方法中不能直接操作View，需要放在主线程操作才能生效。如下代码所示：
    @JavascriptInterface
    public void setTitle(final String title) {
        HandlerUtil.runOnUiThread(new Runnable() {
     ...]]></description><category></category></item><item><title><![CDATA[Android studio System.out 中文乱码]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/84313740</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/84313740</guid><author>hello_12413</author><pubDate>Wed, 21 Nov 2018 09:43:17 +0800</pubDate><description><![CDATA[今天在做一个线程方面的总结，突然发现 System.out.print中文会乱码,如下图



这是因为在Gradle中没有配置，在对应的module的gradle中添加如下配置代码：

tasks.withType(JavaCompile) {
    options.encoding = &quot;UTF-8&quot;
}


这样就好了




...]]></description><category></category></item><item><title><![CDATA[Base64 编码]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/70057891</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/70057891</guid><author>hello_12413</author><pubDate>Tue, 11 Apr 2017 16:49:30 +0800</pubDate><description><![CDATA[Base-64编码可以将任意一组字节转换为较长的常见文本字符序列，从而可以合法地作为首部字段值。此处记录方便开发时使用package com.cnepay.mobile.bts.utils;import java.io.UnsupportedEncodingException;/**
 * @author xugang
 * @date 2014年8月22日 下午9:50:28
 */
public]]></description><category></category></item><item><title><![CDATA[RSA Android 实现]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/70057170</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/70057170</guid><author>hello_12413</author><pubDate>Tue, 11 Apr 2017 16:42:40 +0800</pubDate><description><![CDATA[Android 开发时使用RSA加密时使用的类，方便使用时拷贝package com.cnepay.mobile.bts.utils;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.m]]></description><category></category></item><item><title><![CDATA[Android 浸入式标题栏]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51760436</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51760436</guid><author>hello_12413</author><pubDate>Sat, 25 Jun 2016 22:16:58 +0800</pubDate><description><![CDATA[if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    // 透明状态栏 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
} 
要注意的是，不要将状态栏设为白色，因为Android的状态栏图标和文字是白色的，而且API]]></description><category></category></item><item><title><![CDATA[Android Activity 详解]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51760327</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51760327</guid><author>hello_12413</author><pubDate>Sat, 25 Jun 2016 21:54:43 +0800</pubDate><description><![CDATA[生命周期 
如上图所示，Activity生命周期很简单共七个生命周期函数，oncreate(),onrestart(),onstart(),onresume(),onpause(),onstop(),ondestroy(); 
下面举两个例子来说明Activity生命周期函数调用关系。A Activity 打开 B Activity ，B占满屏幕,返回A。A Activity 打开 C Activi]]></description><category></category></item><item><title><![CDATA[Android Handler 详解]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51759787</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51759787</guid><author>hello_12413</author><pubDate>Sat, 25 Jun 2016 19:54:28 +0800</pubDate><description><![CDATA[Handler适用于线程间交互的一种机制。牵扯到四个类：Handler，Looper，MessageQueue，Message。 
这四个类关系如下图所示： 
 
这个图自己画的，比较简易，但是很能说明他们的关系 
Handler:用于线程之间发送消息，一般Handler在主线程中被创建，而后和UI线程绑定。其他子线程完成了耗时任务需要使用“sendMessage”发送消息到消息队列。 
Messa]]></description><category></category></item><item><title><![CDATA[Android Studio 关联源码问题]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51759706</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51759706</guid><author>hello_12413</author><pubDate>Sat, 25 Jun 2016 19:26:19 +0800</pubDate><description><![CDATA[Android Studio 点击某个类查看源码有时候会出现如下情况 
 
这种情况并不是每个项目都会出现这种情况，那是因为项目的编译版本不同，有的关联了Sources中的源码，而有的没有。 
下面说一下具体的解决办法： 
第一步：找到jdk.table配置文件Windows系统中:
        C:\Users{USER_NAME}.AndroidStudio2.0\config\option]]></description><category></category></item><item><title><![CDATA[Android EditView 输入限制（软键盘限制）]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51759669</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51759669</guid><author>hello_12413</author><pubDate>Sat, 25 Jun 2016 19:14:02 +0800</pubDate><description><![CDATA[众所周知EditView有个inputType 属性可以设置输入的类型。 
如下设置，则只能输入数字：android:inputType="number"但是有时候需要自定义输入限制条件，比如第一位只能是“1”，一共11位，超过11位则无法输入，或者只允许输入小于5以下的数字等，则需要其他设置。Android中有三种方式来设置。 
第一种：digits 属性 
如下设置为：只能输入0-5之间的数字，]]></description><category></category></item><item><title><![CDATA[Android Socket 聊天室]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51170455</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51170455</guid><author>hello_12413</author><pubDate>Sat, 16 Apr 2016 21:48:47 +0800</pubDate><description><![CDATA[项目地址：https://github.com/SunnyLine/Android-Socket-ChatRoom 
部分截图：]]></description><category></category></item><item><title><![CDATA[SwipeRefreshLayout+RecyclerView  下拉刷新]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51090576</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51090576</guid><author>hello_12413</author><pubDate>Thu, 07 Apr 2016 23:30:28 +0800</pubDate><description><![CDATA[SwipeRefreshLayout 是v4包中的控件， 
RecyclerView  是v7包中的控件，替代了ListView，强制使用ViewHolder。 
Demo 地址：https://github.com/SunnyLine/SwipeRefreshAddRecyclerViewLayout<android.support.v4.widget.SwipeRefreshLayout xml]]></description><category></category></item><item><title><![CDATA[购物车-----ListView 中CheckBox混乱]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/51090440</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/51090440</guid><author>hello_12413</author><pubDate>Thu, 07 Apr 2016 23:09:11 +0800</pubDate><description><![CDATA[Demo项目下载地址：https://github.com/SunnyLine/ShopCart这里只是购物车页面，地址管理，和订单生成都没有添加。主要处理ListView中CheckBox混乱问题，商品删除，数量增减，全选，取消全选，等。代码如下：Adapter ，用Map记住CheckBox状态和CheckBox标记信息    public void init() {]]></description><category></category></item><item><title><![CDATA[SQLite、Cursor简单使用]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/50373763</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/50373763</guid><author>hello_12413</author><pubDate>Mon, 21 Dec 2015 23:18:23 +0800</pubDate><description><![CDATA[本文完成数据库创建，查询，增加，删除操作。理论就不这么说了，就是那几步，先看效果:]]></description><category></category></item><item><title><![CDATA[Cursor 介绍]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/50331689</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/50331689</guid><author>hello_12413</author><pubDate>Mon, 21 Dec 2015 13:14:21 +0800</pubDate><description><![CDATA[简介： 
这个接口提供随机读写访问一个数据库查询返回的结果集 
游标实现不需要从多个线程同步所以代码，使用游标使用光标时应该执行自己的同步。方法： 
void close()； 
关闭游标，释放所有的资源,使其完全无效。 
void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) 
文本检索请求的列,并将其存储在缓冲区。 
 v]]></description><category></category></item><item><title><![CDATA[解决ViewPager 放在ListView 头位置事件冲突]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/48931319</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/48931319</guid><author>hello_12413</author><pubDate>Sun, 20 Dec 2015 20:18:12 +0800</pubDate><description><![CDATA[很多情况下，ListView头会放着一个横向滑动的控件，不管是ViewPager还是其他自己写的View 。都会有冲突，因为手指滑动无法保证百分之百的水平或者竖直，所以需要重写头部View的dispatchTouchEvent方法来解决问题。如下所示：    float mDownX;
    float mDownY;
// 处理Viewpager作为ListView头事件冲突
    @Over]]></description><category></category></item><item><title><![CDATA[WebView 支持上传图片]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/50220215</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/50220215</guid><author>hello_12413</author><pubDate>Tue, 08 Dec 2015 16:04:41 +0800</pubDate><description><![CDATA[今天公司突然上传了一个网页有上传图片功能，但是WebView没有支持，没办法只能再写些代码。然后就ok了，效果如下图所示： 
 
实现关键代码如下所示：
    @SuppressLint("NewApi")
    private void initmWebView() {
        mWebView.getSettings().setJavaScriptEnabled(true); //]]></description><category></category></item><item><title><![CDATA[微信支付-返回签名错误]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/49153639</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/49153639</guid><author>hello_12413</author><pubDate>Thu, 15 Oct 2015 15:55:45 +0800</pubDate><description><![CDATA[Android 微信支付SDK ，支付操作大概3步。 
1、生成预支付订单 
2、生成签名参数 
3、调取微信支付页面但是需要注意的是，在获取预支付订单的时候会报签名错误。 
大概也就那几种可能： 
1、微信开放平台的签名设置和你当前的的确不一样，这个需要自己检查 
2、API　密匙不正确，这个需要登陆商户后台，修改。 
３、商品名中有中文，需要对拼的ＸＭＬ进行编码ISO8859-1。如下priva]]></description><category></category></item><item><title><![CDATA[ScrollView中放ListView，ListView中放GridView冲突问题]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/48897051</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/48897051</guid><author>hello_12413</author><pubDate>Sun, 04 Oct 2015 16:27:07 +0800</pubDate><description><![CDATA[ScrollView 中放ListView是避免不了的，网上有种靠谱的方法，我用过觉得很不错。ListView package com.work.driver.view;import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;/**
 * @project a_d]]></description><category></category></item><item><title><![CDATA[拍照图片旋转问题]]></title><link>https://blog.youkuaiyun.com/hello_12413/article/details/48896995</link><guid>https://blog.youkuaiyun.com/hello_12413/article/details/48896995</guid><author>hello_12413</author><pubDate>Sun, 04 Oct 2015 16:19:12 +0800</pubDate><description><![CDATA[公司App需要上传头像，手机拍照不同的手机不同的角度，拍出来的照片可能是旋转的。所以需要再旋转回来。 
先获取图片被旋转的角度/**
     * 读取图片属性：旋转的角度
     * 
     * @param path
     *            图片绝对路径
     * @return degree旋转的角度
     */
    public static int readP]]></description><category></category></item></channel></rss>