1.两个activity程序分析:
在/activity/AndroidManifest.xml文件里,在定义一个activity:
<!-- 再定义一个activity -->
<activity android:name="activity2"></activity>
然后分别用两个java程序代码文件来实现这两个activity,其中activity2.java的实现如下:
public void onClick(View v)
{
Intent intent=new Intent();
intent.setClass(activity2.this,ActivityActivity.class);
startActivity(intent);
activity2.this.finish();
}
前面一个是一个Activity后面一个是要跳转的Activity
基本步骤就是
Intent intent = new Intent();//新建一个activity
intent.setClass(TestActivity.this, login.class);//从本类的activity跳转到目标activity。
startActivity(intent);//执行目标activity
TestActivity.this.finish();//退出第一个activity
注:还要在androidMainfest.xml注册一下目标的activity
还要在
src/空间里新建一个目标的类
res/layout/目录下新建一个对应的布局文件xml。
2.button事件处理
mybutton=(Button)findViewById(R.id.mybutton);
mybutton.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
}
});
3.color
(1)新建/color/res/values/color.xml文件,加入以下内容:
<drawable name="white">#ffffffff</drawable>
java代码实现:
//第一种是获取资源,然后设置背景颜色
Resources resources = getBaseContext().getResources();
Drawable HippoDrawable =resources.getDrawable(R.drawable.white);
mytext0.setBackgroundDrawable(HippoDrawable);
//也可以直接设置颜色
mytext1=(TextView)findViewById(R.id.test1);
mytext1.setTextColor(Color.MAGENTA);
(2)使用style
fromAlpha 属性为动画起始时透明度; toAlpha 属性为动画结束时透明度
首先新建style.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="style0">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#ec9237</item>
</style>
<style name="style1">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#ff7f7c</item>
<item name="android:fromAlpha">0.0</item>
<item name="android:toAlpha">0.0</item>
</style>
</resources>
main.xml文件中使用:
<TextView
style="@style/style0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/str0"
android:gravity="center_vertical|center_horizontal" />
<TextView
style="@style/style1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/str1"
android:gravity="center_vertical|center_horizontal" />
android:gravity:
这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。例如,在一个Button按钮控件中设置如下两个属性,
android:gravity="left"和android:text="提交",这时Button上的文字“提交”将会位于Button的左部。
android:layout_gravity:
这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。同样,当我们在Button按钮控件中设置android:
layout_gravity="left"属性时,表示该Button按钮将位于界面的左部。
当我们采用LinearLayout布局时,有以下特殊情况需要我们注意:
(1)当 android:orientation="vertical" 时, android:layout_gravity只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。
(2)当 android:orientation="horizontal" 时, android:layout_gravity只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。
4.radiobutton的使用
首先在layout文件中设置好界面:
<RadioGroup
android:id="@+id/radiogroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="3px"
>
<RadioButton
android:id="@+id/radiobutton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radiobutton1"
/>
</RadioGroup>
然后再java代码中写入以下内容:
radiogroup=(RadioGroup)findViewById(R.id.radiogroup1);
radio1=(RadioButton)findViewById(R.id.radiobutton1);
radio2=(RadioButton)findViewById(R.id.radiobutton2);
radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(checkedId==radio2.getId())
DisplayToast(radio2.getText());
if(checkedId==radio1.getId())
DisplayToast(radio1.getText());
}
});
public void DisplayToast(CharSequence charSequence)
{
Toast toast=Toast.makeText(this, charSequence, Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP,0,220);
toast.show();
}
5.统计屏幕分辨率
为了获取 DisplayMetrics 成员,首先初始化一个对象如下:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics;
注:构造函数 DisplayMetrics 不需要传递任何参数;调用 getWindowManager() 之后,会取得 现有 Activity 的 Handle ,getDefaultDisplay()
方法将取得的宽高维度存放于 DisplayMetrics 对象中,而取得的宽高维度是以像素为单位(Pixel) ,“像素”所指的是“绝对像素” 而非“相对像素”。
String strOpt ="手机屏幕分辨率为:"+dm.widthPixels+"x"+dm.heightPixels;
myTextView =(TextView)findViewById(R.id.myText);
myTextView.setText(strOpt);
6.布局文件的切换
首先写两个布局文件,当按下其中的按钮时,切换布局文件
button0=(Button)findViewById(R.id.button0);
button0.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
jmptolayout2();
}
});
}
public void jmptolayout2()
{
//切换布局界面
setContentView(R.layout.mylayout);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
jmptolayout1();
}
});
}
public void jmptolayout1()
{
setContentView(R.layout.main);
button0=(Button)findViewById(R.id.button0);
button0.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
jmptolayout2();
}
});
}
}
7.@Override的使用
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的
(它以为这个方法是你的子类中自己增加的方法)。
举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
public void onCreate(Bundle savedInstanceState)
{…….}
这种写法是正确的,如果你写成:
public void oncreate(Bundle savedInstanceState)
{…….}
这样编译器回报如下错误——The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写onCreate方法(因为
oncreate应该为onCreate)。而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。