<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[crystalddd的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/crystalddd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; crystalddd]]></copyright><item><title><![CDATA[UiAutomator自动化测试之创建build.xml文件]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/73379941</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/73379941</guid><author>crystalddd</author><pubDate>Sat, 17 Jun 2017 14:19:53 +0800</pubDate><description><![CDATA[在学习UiAutomator自动化测试创建build.xml文件时，出现以下问题：这个问题是指-t 后面的android targets id，也就是如图上的“1，应该是对应api 16 或者在api 16以上的id。那么怎样来查看每个api版本对应的android targets id呢？ 使用 android list targets 命令查看。如下图：看图，api 16对应的targets i]]></description><category></category></item><item><title><![CDATA[Java 集合中元素交换位置的两种实现方式]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/72973133</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/72973133</guid><author>crystalddd</author><pubDate>Sat, 10 Jun 2017 00:23:15 +0800</pubDate><description><![CDATA[package com.crystal.didemo.interfaces;import java.util.Collections; 
import java.util.List;/** 
 * 集合工具类 
 * 向前移动问题：把第一个元素与第三个元素调换一下 
 * 向后移动问题：把第三个元素与第一个元素调换一下 
 * Created by crystal on 2017/6/9. 
 */]]></description><category></category></item><item><title><![CDATA[自定义顺序存储结构线性表--java语言描述]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/51396331</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/51396331</guid><author>crystalddd</author><pubDate>Fri, 13 May 2016 16:18:33 +0800</pubDate><description><![CDATA[自定义顺序存储结构线性表–java语言描述声明线性表接口public interface LinearList<T> {    public int size();
    public boolean add(T t);
    public boolean insert(int i, T t);
    public T getElement(int i);
    public boolean]]></description><category></category></item><item><title><![CDATA[自定义dialog的宽度充满整个屏幕宽度的问题]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/50987839</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/50987839</guid><author>crystalddd</author><pubDate>Sat, 26 Mar 2016 17:23:42 +0800</pubDate><description><![CDATA[最近在实现一个自定义dialog的时候，效果要求自定义dialog的宽度必须跟手机屏幕的宽度一样宽。自定义dialog：public class CustomDialog extends Dialog{    private Context mContext;    public CustomDialog(Context context) {
        super(context);]]></description><category></category></item><item><title><![CDATA[实现listview的divider带边距效果]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/50040117</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/50040117</guid><author>crystalddd</author><pubDate>Wed, 25 Nov 2015 17:43:25 +0800</pubDate><description><![CDATA[listview的divider带边距效果图：






要实现这种divider边距，我们可以使用inset嵌入图像资源。




listview_divider.xml：


    android:insetLeft="10dip"
    android:insetRight="10dip">
    

   








]]></description><category></category></item><item><title><![CDATA[Android Spinner选择同一个选项时触发onItemSelected事件]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/49872857</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/49872857</guid><author>crystalddd</author><pubDate>Mon, 16 Nov 2015 22:15:17 +0800</pubDate><description><![CDATA[今天有个同事在使用spinner控件时，再次选择同一个选项时没有触发onItemSelected事件。因为项目需求的原因，非常需要。所以我们一起看了看源码找出了“再次选择同一选项时为什么不触发事件”。我们可以带着这样的几个疑惑来分析问题，首先什么时候会触发onItemSelected事件？必须具备什么条件才能够有资格触发onItemSelected事件呢？带着这样的疑问我首选会想到setOnItem]]></description><category></category></item><item><title><![CDATA[Android 实现适配器中的子控件与Activity通信]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/48223271</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/48223271</guid><author>crystalddd</author><pubDate>Sat, 05 Sep 2015 10:57:39 +0800</pubDate><description><![CDATA[有时需要在activity中直接获取listview中每一项(item)的子控件，这个时候我可以使用接口来与activity通信，将子控件作为参数传递过来。代码如下：


ListViewDemoAdapter 适配器代码：




private static final String TAG = ListViewDemoAdapter.class.getSimpleName()]]></description><category></category></item><item><title><![CDATA[Android ListView EditText批量录入功能]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/48214001</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/48214001</guid><author>crystalddd</author><pubDate>Fri, 04 Sep 2015 21:49:37 +0800</pubDate><description><![CDATA[最近工作中有一个批量录入的功能，使用的是ListView + EditText组合。由于业务的需要，所以需要自己编写一个符合我们业务需求的软键盘。

    刚好Android 中也提供了自定义键盘。经过一些案例，自定义键盘ok啦！但是ListView上的edittext使用自定义键盘，那么焦点输入没法像系统软键盘一样快速定位显示输入的文本。此时有一种方案，那就是ListView对应的适配器提]]></description><category></category></item><item><title><![CDATA[Android ListView错位问题之背景色错位]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/48164135</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/48164135</guid><author>crystalddd</author><pubDate>Tue, 01 Sep 2015 21:35:40 +0800</pubDate><description><![CDATA[最近工作中很多功能有用到ListView控件，当然用此控件，大家都知道需要做一些优化。这些优化是为了防止我的应用出现内存溢出的问题。主要是来做一个视图缓存，其实很简单，就是用一个静态类ViewHolder来缓存我们的每个item视图中每个子控件。具体我就不多介绍了，大家可以去看看优化这一块。这里就不多介绍了，我们这里主要介绍使用视图缓存之后造成的背景色错位问题。
package com.exampl]]></description><category></category></item><item><title><![CDATA[ListView滚动后内容重复的问题]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/47397163</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/47397163</guid><author>crystalddd</author><pubDate>Mon, 10 Aug 2015 13:00:53 +0800</pubDate><description><![CDATA[最可能出现重复的情况就是getView(int position, View convertView, ViewGroup parent)中的convertview利用的情况，由于getview的时候，listview自身会复用已存在的item，即重用最先新建的那几个item，还有就是注意tag的使用，convertView.getTag()返回的也是重用的view，其状态是和被重用的一样，包括图片]]></description><category></category></item><item><title><![CDATA[消除启动欢迎页时的黑屏问题]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/46809991</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/46809991</guid><author>crystalddd</author><pubDate>Wed, 08 Jul 2015 22:39:02 +0800</pubDate><description><![CDATA[关于之前做的“坐标派”应用，打开应用进入欢迎页时由于要请求网络数据，造成停留时间很长，特别是欢迎页有黑屏问题。这么长的停留时间而且是黑屏的欢迎页。 
这给用户的体验非常糟！近期看一个开源应用源码时，它的欢迎页主题跟“坐标派”欢迎页主题是一样的。都是继承于android:style/Theme.NoTitleBar.Fullscreen或者android:style/Theme.Black.NoTit]]></description><category></category></item><item><title><![CDATA[斐波那契数  兔子问题]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/46275335</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/46275335</guid><author>crystalddd</author><pubDate>Sat, 30 May 2015 16:12:21 +0800</pubDate><description><![CDATA[斐波那契数列：斐波那契在《算盘书》中提出了一个有趣的兔子问题：
一般而言，兔子在出生两个月后，就有繁殖能力，一对兔子每个月能生出一对小兔子来。如果所有兔都不死，那么一年以后可以繁殖多少对兔子？ 
我们不妨拿新出生的一对小兔子分析一下： 
第一个月小兔子没有繁殖能力，所以还是一对； 
两个月后，生下一对小兔总数共有两对； 
三个月以后，老兔子又生下一对，因为小兔子还没有繁殖能力，所以一共是三对； 
…]]></description><category></category></item><item><title><![CDATA[Android Studio快速生成set get以及构造方法的快捷方式]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/45560253</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/45560253</guid><author>crystalddd</author><pubDate>Thu, 07 May 2015 14:03:51 +0800</pubDate><description><![CDATA[两种方式：方式一：Code–>Generate 
方式二：通过快捷键Alt+Insert以上任何一种方式执行后会弹出一个框，选中你需要快速生成的项就OK了！操作截图按操作顺序如下：1. 
2. 
3.]]></description><category></category></item><item><title><![CDATA[关于继承parent="Theme.AppCompat"错误：This Activity already has an action bar supplied by the window decor]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/45538701</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/45538701</guid><author>crystalddd</author><pubDate>Wed, 06 May 2015 17:46:14 +0800</pubDate><description><![CDATA[问题分析： 
    首先我的activity使用的主题是继承于Theme.AppCompat，但是我定义了android:windowActionBar等于false，如下：  <!--定义主题使用parent引用我们自定义的AppTheme.Base主题-->
  <style name="AppTheme" parent="AppTheme.Base"></style>
 <style nam]]></description><category></category></item><item><title><![CDATA[关于Android Studio错误：local path doesn't exist 的问题解决方案]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/45536493</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/45536493</guid><author>crystalddd</author><pubDate>Wed, 06 May 2015 15:29:17 +0800</pubDate><description><![CDATA[第一步：点击如下图红箭头指向的图标：第二步：重新编译项目，如果还有问题，试着执行File > Invalidate Caches/Restart。一般做完第一步就ok了！]]></description><category></category></item><item><title><![CDATA[Android Studio删除project下的module后弹出：Gradle failed: already disposed module:XX  问题：]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/45502743</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/45502743</guid><author>crystalddd</author><pubDate>Tue, 05 May 2015 15:10:19 +0800</pubDate><description><![CDATA[Android Studio删除project下的module后弹出：Gradle failed: already disposed module:XX  问题：解决办法：           Android studio 中删除或者移除原有的 module 后，一般会跳出一个弹窗，内容大概是：Gradle failed: already disposed module:XX，要解决这个问题，进入]]></description><category></category></item><item><title><![CDATA[自定义volley]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/44810955</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/44810955</guid><author>crystalddd</author><pubDate>Wed, 01 Apr 2015 18:21:42 +0800</pubDate><description><![CDATA[volley工具类：
package com.crystal.gsonrequest.util;

import android.content.Context;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;]]></description><category></category></item><item><title><![CDATA[Gson入门]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/44808377</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/44808377</guid><author>crystalddd</author><pubDate>Wed, 01 Apr 2015 16:01:53 +0800</pubDate><description><![CDATA[/** * Person实体类 * @author crystal * */public class Person {private String name;private int age;public Person() {super();}public Person(String name, int age) {super();this.name = name;this.age = age;}p]]></description><category></category></item><item><title><![CDATA[Android使用BitmapFactory.Options解决加载大图片内存溢出问题]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/44565823</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/44565823</guid><author>crystalddd</author><pubDate>Mon, 23 Mar 2015 16:44:37 +0800</pubDate><description><![CDATA[由于Android对图片使用内存有限制，若是加载几兆的大图片便内存溢出。Bitmap会将图片的所有像素（即长x宽）加载到内存中，
如果图片分辨率过大，会直接导致内存溢出（java.lang.OutOfMemoryError）
，只有在BitmapFactory加载图片时使用BitmapFactory.Options对相关参数进行配置来减少加载的像素。




package com.]]></description><category></category></item><item><title><![CDATA[关于volley请求失败会重新请求问题]]></title><link>https://blog.youkuaiyun.com/crystalddd/article/details/42340919</link><guid>https://blog.youkuaiyun.com/crystalddd/article/details/42340919</guid><author>crystalddd</author><pubDate>Fri, 02 Jan 2015 13:48:21 +0800</pubDate><description><![CDATA[Volley中没有指定的方法来设置请求超时时间，可以设置RetryPolicy 来变通实现。DefaultRetryPolicy类有个initialTimeout参数，可以设置超时时间。要确保最大重试次数为0，以保证超时后不重新请求。




为确保请求失败后不重新请求问题，我们可以针对volley这样设置：


req.setRetryPolicy(new
 DefaultRe]]></description><category></category></item></channel></rss>