当初学习安卓应用程序开发写过的作业,准备删除文档了放这里留念(?)。
①ImageView
activity_main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView1"
android:padding="2dp"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000"
android:src="@drawable/ic_launcher"/>
</RelativeLayout>
段代码实现了一个简单的 Android 布局,其中包含一个 ImageView 控件,在屏幕中心显示一个黑色背景的图片。
②CheckBox
activity_main.xml
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="让按钮可用" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="开始"
android:layout_below="@+id/checkBox1"
android:layout_alignParentStart="true"
android:layout_alignEnd="@+id/checkBox1" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"单击了按钮!",Toast.LENGTH_SHORT).show();
}
}
);
CheckBox checkbox=(CheckBox) findViewById(R.id.checkBox1);
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){
if (isChecked){
button.setEnabled(true);
}
else{
button.setEnabled(false);
}
}
});
}
}
demens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="activity_horizontal_margin">16dp</dimen>
</resources>
这段代码实现了一个简单的 Android 应用程序,其中包含一个 CheckBox 和一个 Button 控件。
CheckBox 控件用于控制 Button 控件的可用状态,即使 Button 控件初始处于不可用状态,但是当 CheckBox 控件被勾选时,Button 控件就会变成可用状态。
①ProgressBar
Activity_main.xml
<TextView
这段代码实现了一个包含 GridView 和 ImageSwitcher 控件的 Android 应用程序。
GridView 控件显示了几张图片,每张图片下方有一个标题。当用户点击其中一张图片时,会在 ImageSwitcher 控件中显示该图片。
Aactivity_main.xml
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="计算您的星座"
android:padding="20dp"/>
<LinearLayout
android:id="@+id/linearLayout1"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:text="阳历生日:"/>
<EditText
android:id="@+id/birthday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:hint="请输入出生日期(YYYY-MM-DD)" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:text="格式:YYYY-MM-DD例如:2012-12-31"/>
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"/>
</LinearLayout>
ResultActivity.java
public class ResultActivity extends Activity {
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.result);//设置 该Activity使用的布局
//获取显示生日的文本框
TextView birthday = (TextView) findViewById(R.id.birthday);
//获取显示星座的文本框
TextView result = (TextView) findViewById(R.id.result);
Intent intent = getIntent();//获取Intent对象
Bundle bundle = intent.getExtras();//获取传递的数据包
//获取一个可序列化的Info对象
Info info = (Info) bundle.getSerializable("info");
//获取性别并显示到相应文本框中
birthday.setText("您的阳历生日是" + info.getBirthday());
result.setText( query(info.getBirthday()));//显示计算后的星座
}
public String query(String birthday) {
int month = 0;
int day = 0;
try {
month = Integer.parseInt(birthday.substring(5, 7));
day = Integer.parseInt(birthday.substring(8, 10));
} catch (Exception e) {
e.printStackTrace();
}
String name = "";//提示信息
if (month > 0 && month < 13 && day > 0 && day < 32) {
if ((month == 3 && day > 20) || (month == 4 && day < 21)) {
name = "您是白羊座!";
} else if ((month == 4 && day > 20) || (month == 5 && day < 21)) {
name = "您是金牛座!";
} else if ((month == 5 && day > 20) || (month == 6 && day < 21)) {
name = "您是双子座!";
} else if ((month == 6 && day > 21) || (month == 7 && day < 21)) {
name = "您是巨蟹座!";
} else if ((month == 7 && day > 22) || (month == 8 && day < 21)) {
name = "您是狮子座!";
} else if ((month == 8 && day > 22) || (month == 9 && day < 21)) {
name = "您是处女座!";
} else if ((month == 9 && day > 22) || (month == 10 && day < 21)) {
name = "您是天秤座!";
} else if ((month == 10 && day > 22) || (month == 11 && day < 21)) {
name = "您是天蝎座!";
} else if ((month == 11 && day > 21) || (month == 12 && day < 21)) {
name = "您是射手座!";
} else if ((month == 12 && day > 21) || (month == 1 && day < 21)) {
name = "您是摩羯座!";
} else if ((month == 1 && day > 19) || (month == 2 && day < 21)) {
name = "您是金牛座!";
} else if ((month == 2 && day > 18) || (month == 2 && day < 21)) {
name = "您是双鱼座!";
}
name = month + "月" + day + "日" + name;
} else {
name = "您输入的生日格式不正确或者不是真实生日!";
}
return name;
}
}
Result.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/birthday"
android:padding="10px"
android:text="阳历生日" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/result"
android:padding="10px"
android:text="星座" />
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Info info=new Info();
if("".equals(((EditText)findViewById(R.id.birthday)).getText().toString())){
Toast.makeText(MainActivity.this,"请输入您的阳历生日,否则不能计算!",Toast.LENGTH_SHORT).show();
return;
}
String birthday=((EditText)findViewById(R.id.birthday)).getText().toString();
info.setBirthday(birthday);
Bundle bundle=new Bundle();
bundle.putSerializable("info",info);
Intent intent=new Intent(MainActivity.this,ResultActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
Info.java
public class Info implements Serializable {
private static final long seriaVersionUID=1L;
private String birthday="";//生日
public String getBirthday(){
return birthday;
}
public void setBirthday(String birthday){
this.birthday=birthday;
}
}
这是一个计算星座的安卓应用,用户需要在页面中输入阳历生日,点击“确定”按钮后会跳转到另一个页面,展示用户的星座。
①探照灯效果
Aactivity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frameLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</FrameLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取布局文件中的帧布局管理器
FrameLayout ll=(FrameLayout) findViewById(R.id.frameLayout1);
ll.addView(new MyView(this));//将定义视图添加到帧布局管理器中
}
public class MyView extends View {
private Bitmap bitmap;//源图片,也是背景图片
private ShapeDrawable drawable;
private final int RADIUS=200;//探照灯半径
private Matrix matrix=new Matrix();
public MyView(Context context){
super(context);
Bitmap bitmap_source= BitmapFactory.decodeResource(getResources(),
R.drawable.source);//获取要显示的源图片
bitmap=bitmap_source;
BitmapShader shader=new BitmapShader(Bitmap.createScaledBitmap(
bitmap_source,bitmap_source.getWidth(),
bitmap_source.getHeight(),true), Shader.TileMode.CLAMP,
Shader.TileMode.CLAMP);//创建BitmapShader对象
//圆形的drawable参数
drawable=new ShapeDrawable(new OvalShape());
drawable.getPaint().setShader(shader);
drawable.setBounds(0,0,RADIUS*2,RADIUS*2);//设置圆的外切矩形
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint p=new Paint();
p.setAlpha(50);
canvas.drawBitmap(bitmap,0,0,p);//绘制背景图片
drawable.draw(canvas);//绘制探照灯照射的图片
}
@Override
public boolean onTouchEvent(MotionEvent event){
final int x=(int) event.getX();//获取当前接触点的X轴坐标
final int y=(int) event.getY();//获取当前触摸点的Y轴坐标
//平移到绘制阴影的起始位置
matrix.setTranslate(RADIUS-x,RADIUS-y);
drawable.getPaint().getShader().setLocalMatrix(matrix);
//设置圆的外切矩形
drawable.setBounds(x-RADIUS,y-RADIUS,x+RADIUS,y+RADIUS);
invalidate();//重绘画布
return true;
}
}
}
这是一个实现探照灯效果的安卓应用,用户可以触摸屏幕,在屏幕上移动时,会显示一道光圈,模拟探照灯照射的效果。
②实现视频播放器
AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
MainActivity
public class MainActivity extends AppCompatActivity {
private static final String TAG="VideoView";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//不要标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置为全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//强制为横屏模式
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_main);
final VideoView videoView=(VideoView) findViewById(R.id.VideoView01);
Button pauseButton = findViewById(R.id.PauseButton);
Button loadButton = findViewById(R.id.LoadButton);
Button playButton = findViewById(R.id.PlayButton);
loadButton.setOnClickListener(v -> {
videoView.setVideoPath("/sdcard/apple.mp4");
videoView.setMediaController(new MediaController(MainActivity.this));
videoView.requestFocus();
});
playButton.setOnClickListener(v -> {
Log.v(TAG,"start");
videoView.start();
Log.v(TAG,"start OK");
});
pauseButton.setOnClickListener(v -> {
videoView.pause();
});
}
}
activity_main.xml
<VideoView
android:id="@+id/VideoView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/LoadButton"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/LoadButton"
android:text="装载"
android:layout_x="30px"
android:layout_y="300px"
android:textSize="40dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/PlayButton"
android:text="播放"
android:layout_x="120px"
android:layout_y="300px"
android:textSize="40dp"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/LoadButton"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/PauseButton"
android:text="暂停"
android:layout_x="210px"
android:layout_y="300px"
android:textSize="40dp"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/PlayButton"/>
这是一个安卓视频播放器的实现,可以播放储存在设备上的视频文件。
App演示视频
这个App可以实现蓝牙发送消息、NFC传输数据、GPS定位以及短信功能,下面对其详细说明如下:
- 蓝牙发送消息功能
该功能可以让用户使用蓝牙技术连接到其他设备,并与其进行消息传输。在App中,用户可以打开该功能后搜索周围的蓝牙设备,并选择要连接的设备进行配对。当连接成功后,用户可以向其他设备发送消息,也可以接收其他设备发送来的消息。
- NFC传输功能
该功能可以让用户使用近场通信(NFC)技术来传输数据。在App中,用户只需要打开该功能,将自己的设备靠近其他设备,让它们之间相距不超过4cm即可进行数据传输。
- 定位位置功能
该功能可以让用户获取当前设备的GPS定位信息,并显示出来。在App中,用户可以打开该功能后查看当前位置信息。
- 发送短信功能
该功能可以让用户输入一个电话号码并发送短信。在App中,用户只需要输入想要发送短信的号码,用户就可以向他/她发送短信。