- 浏览: 28854 次
- 性别:
最新评论
文章列表
public class MainActivity extends Activity {
private EditText user_name;
private EditText user_password;
private Button loginButton;
private CheckBox save_pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R ...
在drawable文件夹下新建一个animation-list的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/nv1" a ...
前面的两篇博文一个是直接在代码中new出alpha、rotate、scale、translate对象,一个是在xml文件的set标签中指定,如果在set标签下指定对个Animation对象,就会出现叠加的效果。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:f ...
前面的两篇博文讲的ListView的实现,首先要拿到布局文件中的ListView,然后为其添加适配器,写一个内部类继承BaseAdapter,然后重写里面的getCount和getView方法,其实在android内部,google工程师已经写好了某些类已继承Base ...
在ListView<1>中,简单的实现了List的效果,但是有很大弊病,UI界面是与用户交互的直接窗口,显然,list模板是一个单一的TextView过于单调,如果,这个模板我们可以集合android的UI组件自行设计,效果就会很好。
在这个例子中,新建了一个XML文件show.xml,专门用来设置list的每一条目显示的模板,在本例中,只是ImageView和TextView的结合,当然还可以有更复杂的,用ImageView,TextView,Button等等组件以RelativeLayout的布局可以创建出我们喜欢的list模板。
...
首先拿到ListView,然后添加适配器,setAdapter参数是一个ListAdapter接口,若直接实现接口, 将有很多不必要的方法,一般这种情况都有一个对应的实现了相应接口的适配器类,BaseXXX、 DefaultXXX、SimpleXXX等。 在BaseAdapter的getView方法中,需要提供一个供显示内容的view,在此处应和scrollView 做对比,若ScrollView中要显示50条TextView的数据,那么就有50个TextView的对象在内存中, 这种情况下若数据很多,多至上万,是很消耗内存的,而此处为ListView添加适配器的形式,在指定了 view的模板 ...
Animations的第二种使用方法
1.在res文件夹下新建一个anim的 文件夹;
2.创建xml文件,首先加入set便签,改标签如下:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
</set>
3.在该标签当中加入alpha、rotate、scale或translate标签
...
public class MainActivity extends Activity {
private ImageView image;
private Button alpha_btn, rotate_btn, scale_btn, translate_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image = ( ...
fromDegress为0,则从view本来的位置绕着旋转点,旋转toDegress度,若fromDegress为90,
toDegress为180,则view瞬间跳转到以旋转90度的位置,然后再顺时针旋转90度。
1.RotateAnimation(float fromDegrees, float toDegrees)
默认的旋转点为view的左上角
X轴顺时针转动到fromDegrees为旋转的起始点,X轴顺时针转动到toDegrees为旋转的起始
RelativeLayout相对布局
下面是常用的一些属性
RelativeLayout用到的一些重要的属性:
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_a ...
WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。
在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。主要包括以下几个类和接口:
1.ScanResult
主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息。
2.WifiConfiguration
Wifi网络的 ...
在此处可完全不用Handler,只是了解用法,Handler是为了解决android的多线程问题--Android平台下不允许新启动的线程访问该Activity里面的组件,这样会导致新启动的线程无法动态改变界面组件中的属性值,这就需要Handler的消息传递机制来解决了。
--》1.在新启动的线程中发送消息。(当然啦,这里并非新启动的线程)
Message msg = new Message();
msg.what = DATE_ID;
myHandler.sendMessage(msg);
-->2.在主线程中获取、处理消息。
private stati ...
SharedPreferences保存的数据只要是简单类型的key-value对
SharedPreferences接口主要负责读取应用程序的Preferences数据,有如下方法来访问SharedPreferences中的key-value对。
--》1.boolean contains(String key);判断SharedPreferences是否包含特点key的数据。
--》2.abstract Map<String, ?> getAll(); 获取SharedPreferences数据里全部的key-value对。
--》3 ...
上一篇博文讲的是直接在layout中的xml文件中声明fragment,用android:name=""指明了在layout中药实例化的fragment类,当系统创建这个activity layout时,它实例化每一个在layout中声明的fragment,并调用每一个对应fragment类的onCreateView()方法,来获取每一个fragment的layout,系统将从fragment类返回的VIew直接插入到fragment元素所在的地方。
第二种添加fragment的方法,使用FragmentManager将fragment添 ...
先看一下效果图: 左右各是一个Fragment,左边的三个按钮可以控制右边的背景色,右边的mood按钮,可以控制左边最上面的ImageView,这样就简单的实现了Fragment的界面交互。
在MainActivity的布局中添加Fragment有两种方式,不同添加Fragment的方法,要实现两个Fragment的交互的差异是很大的,本文讲比较简单的一种,下一节讲另一种方式。
看MainActivity的布局文件mian.xml文件就明了了。
main.xml:
<LinearLayout xmlns:android="http:/ ...