安卓应用程序开发入门

当初学习安卓应用程序开发写过的作业,准备删除文档了放这里留念(?)。

①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定位以及短信功能,下面对其详细说明如下:

  1.     蓝牙发送消息功能

    该功能可以让用户使用蓝牙技术连接到其他设备,并与其进行消息传输。在App中,用户可以打开该功能后搜索周围的蓝牙设备,并选择要连接的设备进行配对。当连接成功后,用户可以向其他设备发送消息,也可以接收其他设备发送来的消息。

  1.     NFC传输功能

    该功能可以让用户使用近场通信(NFC)技术来传输数据。在App中,用户只需要打开该功能,将自己的设备靠近其他设备,让它们之间相距不超过4cm即可进行数据传输。

  1.     定位位置功能

    该功能可以让用户获取当前设备的GPS定位信息,并显示出来。在App中,用户可以打开该功能后查看当前位置信息。

  1.     发送短信功能

该功能可以让用户输入一个电话号码并发送短信。在App中,用户只需要输入想要发送短信的号码,用户就可以向他/她发送短信。

              

猜你喜欢

转载自blog.csdn.net/aligadorr/article/details/131277473