注意字段名要一致
使用Gson解析JsonArray时,代码如下:
Gson gson = new Gson(); Type type = new TypeToken<ArrayList<数据类型>>(){}.getType(); ArrayList<数据类型>list = gson.fromjson(json,type);
其中Type为Java.lang.reflect.type
TypeToken为Gson.reflect.typeToken
设置GridView的间距
竖直方向的item的间隔用android:verticalSpacing="15dp"
根据屏幕大小的几分之几来设置
// 得到屏幕参数 WindowManager systemService = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE); mDisplay = systemService.getDefaultDisplay();
使用工具jsonschema2pojo快速创见Gson解析需要的类
删除无用的@…,由于工具的原因,下划线_下划线都被替换成了-,改之
ObjectAnimator.ofFloat(mTabIndiactor, "translationX", 0).setDuration(500).start();
注意,这里只设置了到哪里去而没有从哪里开始
将各式各样的布局以及多个listview添加ScrollView中
自定义ListView使其能够在ScrollView中正常显示
mBendanWeb.loadDataWithBaseURL(null, mData.getDetails(),"text/html", "UTF-8", null);
textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
scrollview.scrollTo(0,0); scrollview.smoothScrollTo(0,0);
android:indeterminateOnly这个属性如果设置为true,表示的是这个ProgressBar是模糊的,不明确的,也就是说,当前它并没有体现出具体的进度,只是一直循环往复
关键属性:progressDrawable
,MaxHeight
,MinHeight
直接开启系统的拨号功能,在代码中传入需要拨打的号码
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+"110"));
跳转到拨号界面
Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW); intent.setType("vnd.android.cursor.item/sim-contact");
添加支付悬浮
思路:
当scrollView上下滑动时,支付布局2有条件的Gone或者Visible。
Gone:默认
Visible:此时scrollView滑动的高度>=图片控件的高度
时时监听scrollView滑动距离
自定义ScrollView,并声明一个设置监听的方法
MyScrollView代码:
package com.jensen.quiet; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; public class MyScrollView extends ScrollView { private OnScrollListener listener; public interface OnScrollListener { void onScroll(int height); } public void setOnScrollListener(OnScrollListener listener) { this.listener = listener; } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { listener.onScroll(t); super.onScrollChanged(l, t, oldl, oldt); } }
ViewPager + 图片加载UIL + 黑色背景
ListView
字母索引(开源项目)
将所有数据按照字母排序
侧边字母索引
在values文件下得styles文件中添加如下代码:
<style name="NoBar" parent="android:Theme.Light.NoTitleBar"></style>
在values-v14文件夹下的styles中添加如下代码:
<style name="NoBar" parent="android:Theme.Holo.Light.NoActionBar"></style>
在清单文件的application标签下添加:
android:theme="@style/NoBar"
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背景色,设置水平间方向间隔属性值android:horizontalSpacing
和竖直方向间隔属性值android:verticalSpacing
设置GridView子项背景色,要求 子项背景色跟GridView背景色不一致。
Drawable drawable= getResources().getDrawable(R.drawable.drawable); // 这一步必须要做,否则不会显示. drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); myTextview.setCompoundDrawables(drawable,null,null,null);
或
myTextview.setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom)
耗时工程,以下省略一千字
使用xml属性:button
添加手机验证码登录
查看GitHub上的源码,知道了怎么使用CheckBox的监听
@OnCheckedChanged(R.id.simple_activity_checkbox) void onCheckedChanged(CompoundButton button, boolean checked) { Toast.makeText(this, "CheckBox Changed! " + checked, Toast.LENGTH_SHORT).show(); }
addTextChangedListener(TextWatcher watcher)
方法对EditText实现监
如何使用自定义控件的属性
在自定义控件中使用自定义属性: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。步骤:
public MySideBar(Context context, AttributeSet attrs) { super(context, attrs); // 添加属性 //R.styleable.MySideBar就是刚刚在attrs.xml中定义的属性 TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attrs, R.styleable.MySideBar); // 读具体的某个属性 dimen = obtainStyledAttributes.getDimension(R.styleable.MySideBar_contentSize, 20); //释放内存 obtainStyledAttributes.recycle(); }
思路:在location中添加一个ListView用于显示搜索结果,定义一个容器储存搜索匹配拼音的结果,为EditText添加输入监听
修改布局,使用FrameLayout
关键代码:
mSerach.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 汉字的话要使用拼音库 String key = s.toString().toLowerCase(); mSerachCity.clear(); serachAdapter.notifyDataSetChanged(); if ("".equals(key)) { mSearchListView.setVisibility(View.GONE); } else { mSearchListView.setVisibility(View.VISIBLE); for (int i = 0; i < mAllcity.size(); i++) { Allcity city = mAllcity.get(i); if (city.getPinyin().toLowerCase().startsWith(key)) { mSerachCity.add(city); serachAdapter.notifyDataSetChanged(); } } } }
ActionBarSherlock库发生奇葩错误,ERROR: In <declare-styleable> SherlockSpinner, unable to find attribute android:popupPromptView。解决:API版本不能大于19,于是我选择用4.4.2来作为编译的主力军
新浪微博授权成功时会得到一个Token
mInputPwd.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//可见 mInputPwdConfirm.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);//隐藏
点击随便逛逛跳转到周边界面,使用了mTabHost.setCurrentTab(index);
方法。
关键属性button,可以设成想要的按钮样式,设成@null的时候就看不到选框了
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。