项目:拉手团购项目:拉手团购10.27构建框架下载数据

注意字段名要一致

使用Gson解析JsonArray时,代码如下:

Gsongson=newGson();Typetype=newTypeToken<ArrayList<数据类型>>(){}.getType();ArrayList<数据类型>list=gson.fromjson(json,type);

其中Type为Java.lang.reflect.type

TypeToken为Gson.reflect.typeToken

设置GridView的间距

竖直方向的item的间隔用android:verticalSpacing="15dp"

如何设置图片大小

根据屏幕大小的几分之几来设置

10.29ListView中刷新命令只与ListView的getView有关,与HeadView都没有关系自定义GridView以适应在ListView嵌套中能够滑动,适用于数量不多的情况,因为优化全部失效解决不同分辨率显示效果不同,通过屏幕尺寸来设置布局的大小,代码:

//得到屏幕参数WindowManagersystemService=(WindowManager)getActivity().getSystemService(Context.WINDOW_SERVICE);mDisplay=systemService.getDefaultDisplay();Gson解析

使用工具jsonschema2pojo快速创见Gson解析需要的类

删除无用的@…,由于工具的原因,下划线_下划线都被替换成了-,改之

11.05标签栏的切换动画

ObjectAnimator.ofFloat(mTabIndiactor,"translationX",0).setDuration(500).start();

注意,这里只设置了到哪里去而没有从哪里开始

点击进入商品详情(ScrollView的使用)

将各式各样的布局以及多个listview添加ScrollView中

自定义ListView使其能够在ScrollView中正常显示

通过webView显示超文本

mBendanWeb.loadDataWithBaseURL(null,mData.getDetails(),"text/html","UTF-8",null);给文本添加划掉效果

textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);代码控制ScrollView的滚动

scrollview.scrollTo(0,0);scrollview.smoothScrollTo(0,0);indeterminateOnly属性

android:indeterminateOnly这个属性如果设置为true,表示的是这个ProgressBar是模糊的,不明确的,也就是说,当前它并没有体现出具体的进度,只是一直循环往复

11.11自定义RatingBar

关键属性:progressDrawable,MaxHeight,MinHeight

添加点击拨号功能

直接开启系统的拨号功能,在代码中传入需要拨打的号码

Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+"110"));

跳转到拨号界面

Intentintent=newIntent();intent.setAction("android.intent.action.VIEW);intent.setType("vnd.android.cursor.item/sim-contact");控件悬停功能

添加支付悬浮

思路:

当scrollView上下滑动时,支付布局2有条件的Gone或者Visible。

Gone:默认

Visible:此时scrollView滑动的高度>=图片控件的高度

时时监听scrollView滑动距离

自定义ScrollView,并声明一个设置监听的方法

MyScrollView代码:

packagecom.jensen.quiet;importandroid.content.Context;importandroid.util.AttributeSet;importandroid.widget.ScrollView;publicclassMyScrollViewextendsScrollView{privateOnScrollListenerlistener;publicinterfaceOnScrollListener{voidonScroll(intheight);}publicvoidsetOnScrollListener(OnScrollListenerlistener){this.listener=listener;}publicMyScrollView(Contextcontext,AttributeSetattrs){super(context,attrs);//TODOAuto-generatedconstructorstub}@OverrideprotectedvoidonScrollChanged(intl,intt,intoldl,intoldt){listener.onScroll(t);super.onScrollChanged(l,t,oldl,oldt);}}点击查看详情图片

ViewPager+图片加载UIL+黑色背景

城市列表以及城市定位

ListView

字母索引(开源项目)

将所有数据按照字母排序

侧边字母索引

11.16在xml中设置无ActionBar模式

在values文件下得styles文件中添加如下代码:

<stylename="NoBar"parent="android:Theme.Light.NoTitleBar"></style>

在values-v14文件夹下的styles中添加如下代码:

<stylename="NoBar"parent="android:Theme.Holo.Light.NoActionBar"></style>

在清单文件的application标签下添加:

android:theme="@style/NoBar"dp,sp,px的关系

dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

dp也就是dip,这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一 样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度 设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动 将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。

px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;

sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

在GridView中显示网格的一种方法

该网格线是通过设置GridView各子项的间隔,并分别设置GridView背景色与子项背景色实现的。

实现方法

设置GridView背景色,设置水平间方向间隔属性值android:horizontalSpacing和竖直方向间隔属性值android:verticalSpacing

设置GridView子项背景色,要求 子项背景色跟GridView背景色不一致。

代码中设置TextView中的图片的方法

Drawabledrawable=getResources().getDrawable(R.drawable.drawable);//这一步必须要做,否则不会显示.drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());myTextview.setCompoundDrawables(drawable,null,null,null);

myTextview.setCompoundDrawablesWithIntrinsicBounds(Drawableleft,Drawabletop,Drawableright,Drawablebottom)完善界面细节

耗时工程,以下省略一千字

自定义CheckBox的背景

使用xml属性:button

使用Bmob开放接口

添加手机验证码登录

ButterKnife的使用

查看GitHub上的源码,知道了怎么使用CheckBox的监听

@OnCheckedChanged(R.id.simple_activity_checkbox)voidonCheckedChanged(CompoundButtonbutton,booleanchecked){Toast.makeText(this,"CheckBoxChanged!"+checked,Toast.LENGTH_SHORT).show();}给EditText添加监听

addTextChangedListener(TextWatcher watcher)方法对EditText实现监

完成全部分类界面完成我的拉手界面绘制11.20给自定义控件添加xml属性

如何使用自定义控件的属性

在自定义控件中使用自定义属性:app:contentSize=“10dp”

在布局中声明新的命名空间:xmlns即xml name space。拷贝android命名控件,前面的Android改为app(可变),后面/android改为-auto。 xmlns:app="http://schemas.android.com/apk/res-auto"

如何定义自定义控件的属性

拷贝ApiDemos中的attires.xml文件,保留LabelView属性,删除其他,并按需求修改命名。

在类文件中的两个参数的构造方法中读取控件的属性,代码如下

参考ApiDemosresvaluesattrs.xml。步骤:

publicMySideBar(Contextcontext,AttributeSetattrs){super(context,attrs);//添加属性//R.styleable.MySideBar就是刚刚在attrs.xml中定义的属性TypedArrayobtainStyledAttributes=context.obtainStyledAttributes(attrs,R.styleable.MySideBar);//读具体的某个属性dimen=obtainStyledAttributes.getDimension(R.styleable.MySideBar_contentSize,20);//释放内存obtainStyledAttributes.recycle();}ActiveAndroid保存一对多的数据类型在location界面中添加城市搜索功能

思路:在location中添加一个ListView用于显示搜索结果,定义一个容器储存搜索匹配拼音的结果,为EditText添加输入监听

修改布局,使用FrameLayout

关键代码:

mSerach.addTextChangedListener(newTextWatcher(){@OverridepublicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){//汉字的话要使用拼音库Stringkey=s.toString().toLowerCase();mSerachCity.clear();serachAdapter.notifyDataSetChanged();if("".equals(key)){mSearchListView.setVisibility(View.GONE);}else{mSearchListView.setVisibility(View.VISIBLE);for(inti=0;i<mAllcity.size();i++){Allcitycity=mAllcity.get(i);if(city.getPinyin().toLowerCase().startsWith(key)){mSerachCity.add(city);serachAdapter.notifyDataSetChanged();}}}}11.21自定义头像升级ADT和SDK

ActionBarSherlock库发生奇葩错误,ERROR: In <declare-styleable> SherlockSpinner, unable to find attribute android:popupPromptView。解决:API版本不能大于19,于是我选择用4.4.2来作为编译的主力军

11.22分享到新浪微博

新浪微博授权成功时会得到一个Token

11.24完成登录功能完成定位界面的点击事件显示密码

mInputPwd.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//可见mInputPwdConfirm.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);//隐藏11.25收藏界面

点击随便逛逛跳转到周边界面,使用了mTabHost.setCurrentTab(index);方法。

自定义RadioButton

关键属性button,可以设成想要的按钮样式,设成@null的时候就看不到选框了