百度图片搜索,其实很简单的,主要是在解析出图片URL后,需要添加对应的ref请求头才能正确获取到百度的缩略图.
百度搜索"壁纸"
效果图:
xml布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/loginPageLayout" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/loginUI_Label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="@string/LoginUI" android:textSize="14pt" /> <EditText android:id="@+id/loginUsername" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/loginUI_Label" android:paddingLeft="60dip"/> <TextView android:id="@+id/loginUsername_Label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/loginUsername" android:layout_alignTop="@id/loginUsername" android:layout_marginTop="10dip" android:layout_marginLeft="5dip" android:text="@string/LoginUsernameLabel" /> <EditText android:id="@+id/loginPassword" android:layout_below="@id/loginUsername" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true" android:paddingLeft="55dip" /> <TextView android:id="@+id/loginPassword_Label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/loginPassword" android:layout_alignTop="@id/loginPassword" android:layout_marginTop="10dip" android:layout_marginLeft="5dip" android:text="@string/LoginPasswordLabel" /> <CheckBox android:id="@+id/loginCheckbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/loginPassword" android:layout_alignLeft="@id/loginPassword" android:hint="@string/checkboxRemberPwdLabel" android:checked="true" /> <Button android:id="@+id/loginBtn" android:layout_below="@id/loginPassword" android:layout_toRightOf="@id/loginCheckbox" android:layout_marginLeft="30dip" android:layout_width="100dip" android:layout_height="wrap_content" android:text="@string/btnLoginLabel" /> </RelativeLayout>
这个其实就是提示标签控件(TextView)与文本框控件(EditText)的左上角对齐:通过android:layout_alignLeft及android:layout_alignTop属性来设置。
然后设置文本框控件的内边距:android:paddingLeft="60dip"
android:paddingLeft:控件内部左边距(控件里的文字等内容与控件左侧的距离)
android:layout_marginLeft:控件外部左边距(控件左侧与父控件左侧的距离)
---------------------------------------------------------
开发者经常要基于Observer模式创建事件监听系统(Event-Listener systems),但是他们也应该记得EventObject类。
Observer模式在Java中是非常成功的。Java中的GUI系统(The graphical user interface systems)AWT和Swing,再加上那些使用事件和监听器的地方,都是建立在Observer模式上的。另外,在java.util中还有一个Observer接口和一个Observable类来帮助建立Observer模式。然而,还有另一个容易被开发人员忽略的类:java.util中的EventObject类。
然而EventObject并不是一个特殊的类,它为开发者提供了一个source属性,一个getSource方法,和一个带有事件源对象的构造器,也就是说它只管理了一个单独的变量。它也具有和Marker接口类似的模式。EventObject不是一个接口,但是它将一个类标记为一种类型,正好类似于Marker接口。
使用EventObject将提供附加的方式帮助组织和构建类。例外,未知的代码也可以基于EventObject类型。使用这个类的开发者将会获得这方面的好处。