??? ?掌握布局與控件的使用方法
??? ?掌握有序廣播機(jī)制,根據(jù)廣播接收者的優(yōu)先級(jí)順序接收廣播
??? ?掌握廣播攔截機(jī)制
通過合理布局來搭建界面,界面效果如下圖所示。采用有序廣播方式,將下方小鴨子優(yōu)先級(jí)分別設(shè)置1000、800、600。
1、當(dāng)點(diǎn)擊大喇叭后彈出“有序報(bào)數(shù)”,下方小鴨子從左到右依次報(bào)數(shù)“1”、“2”、“3”;
2、將第二個(gè)小鴨子優(yōu)先級(jí)設(shè)置為1000,注冊(cè)位置調(diào)整到左邊第一個(gè)小鴨子前邊,當(dāng)點(diǎn)擊大喇叭后彈出“有序報(bào)數(shù)”,下方中間小鴨子首先報(bào)數(shù)“1”,之后左邊小鴨子報(bào)數(shù)“2”,最后右邊小鴨子報(bào)數(shù)“3”;
3、設(shè)計(jì)攔截機(jī)制,當(dāng)點(diǎn)擊大喇叭后彈出“有序報(bào)數(shù)”,下方中間小鴨子首先報(bào)數(shù)“1”,之后其余小鴨子不再報(bào)數(shù)。
鼓勵(lì)使用有序廣播機(jī)制和廣播攔截機(jī)制,自主設(shè)計(jì)類似功能的實(shí)驗(yàn)案例。
activity_main.xml?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/count_ducks_bg"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="60dp">
<ImageButton
android:id="@+id/horn"
android:layout_width="180dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:background="@drawable/horn" />
<TextView
android:id="@+id/content_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/horn"
android:background="@drawable/content_left_bg"
android:gravity="center"
android:text="有序報(bào)數(shù)"
android:textColor="@color/white"
android:visibility="gone" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginRight="20dp"
android:orientation="vertical">
<TextView
style="@style/tittle_style"
android:id="@+id/duck_1"
/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/duck" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:orientation="vertical">
<TextView
style="@style/tittle_style"
android:id="@+id/duck_2"
/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/duck" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:orientation="vertical">
<TextView
style="@style/tittle_style"
android:id="@+id/duck_3"
/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/duck" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
style.xml?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="tittle_style">
<item name="android:background">@drawable/tittle</item>
<item name="android:layout_width">20dp</item>
<item name="android:layout_height">20dp</item>
<item name="android:visibility">gone</item>
<item name="android:gravity">center</item>
<item name="android:layout_marginLeft">15dp</item>
<item name="android:textColor">@color/white</item>
</style>
</resources>
這是設(shè)置鴨子報(bào)數(shù)的TextView的格式。文章來源:http://www.zghlxwxcb.cn/news/detail-485915.html
tittle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 設(shè)置漸變顏色-->
<gradient
android:endColor="#fe451d"
android:startColor="#fe957f"
android:type="linear"/>
<!-- 設(shè)置圓角-->
<corners android:radius="180dp"/>
</shape>
這是style調(diào)用的背景格式。文章來源地址http://www.zghlxwxcb.cn/news/detail-485915.html
MainActivity.java
package com.example.shiyan7;
import androidx.appcompat.app.AppCompatActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView duck1, duck2, duck3;
ImageButton horn;
TextView content_left;
MyBroadCastReceiver1 myBroadCastReceiver1;
MyBroadCastReceiver2 myBroadCastReceiver2;
MyBroadCastReceiver3 myBroadCastReceiver3;
private int num = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
register_Receiver();
}
private void init() {
duck1 = findViewById(R.id.duck_1);
duck2 = findViewById(R.id.duck_2);
duck3 = findViewById(R.id.duck_3);
horn = findViewById(R.id.horn);
content_left = findViewById(R.id.content_left);
horn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
content_left.setVisibility(View.VISIBLE);
horn.setClickable(false);
Intent intent = new Intent();
intent.setAction("Count_Duck");
sendOrderedBroadcast(intent,null);
}
});
}
private void register_Receiver() {
IntentFilter intentFilter1=new IntentFilter();
intentFilter1.addAction("Count_Duck");
intentFilter1.setPriority(1000);
// intentFilter1.setPriority(800);
myBroadCastReceiver1=new MyBroadCastReceiver1();
registerReceiver(myBroadCastReceiver1,intentFilter1);
IntentFilter intentFilter2=new IntentFilter();
intentFilter2.addAction("Count_Duck");
intentFilter2.setPriority(800);
// intentFilter2.setPriority(1000);
myBroadCastReceiver2=new MyBroadCastReceiver2();
registerReceiver(myBroadCastReceiver2,intentFilter2);
IntentFilter intentFilter3=new IntentFilter();
intentFilter3.addAction("Count_Duck");
intentFilter3.setPriority(600);
myBroadCastReceiver3=new MyBroadCastReceiver3();
registerReceiver(myBroadCastReceiver3,intentFilter3);
}
class MyBroadCastReceiver1 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
num=num+1;
duck1.setVisibility(View.VISIBLE);
duck1.setText(num+"");
Log.i("duck1","我收到了廣播。");
stop();
}
}
class MyBroadCastReceiver2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
num=num+1;
duck2.setVisibility(View.VISIBLE);
duck2.setText(num+"");
Log.i("duck2","我收到了廣播。");
// abortBroadcast();
// Log.i("duck2","我攔截了廣播。");
stop();
}
}
class MyBroadCastReceiver3 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
num=num+1;
duck3.setVisibility(View.VISIBLE);
duck3.setText(String.valueOf(num));
Log.i("duck3","我收到了廣播。");
stop();
}
}
private void stop() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myBroadCastReceiver1);
unregisterReceiver(myBroadCastReceiver2);
unregisterReceiver(myBroadCastReceiver3);
}
}
到了這里,關(guān)于Android移動(dòng)應(yīng)用開發(fā)——實(shí)驗(yàn)七——小鴨子報(bào)數(shù)(廣播)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!