国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android仿QQ在狀態欄顯示登錄狀態效果

2019-10-22 18:18:38
字體:
來源:轉載
供稿:網友

運行本實例,將顯示一個用戶登錄界面,輸入用戶名(hpuacm)和密碼(1111)后,單擊"登錄"按鈕,將彈出如下圖所示的選擇登錄狀態的列表對話框,

Android,QQ,狀態欄,登錄

單擊代表登錄狀態的列表項,該對話框消失,并在屏幕的左上角顯示代表登錄狀態的通知(如圖)

Android,QQ,狀態欄,登錄

過一段時間后該通知消失,同時在狀態欄上顯示代表該登錄狀態的圖標(如圖)

Android,QQ,狀態欄,登錄

將狀態欄下拉可以看到狀態的詳細信息(如圖)

Android,QQ,狀態欄,登錄

單擊"更改登錄狀態"按鈕,將顯示通知列表。單擊"退出"按鈕,可以刪除該通知。

具體實現方法:

此處是一個登陸界面
res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:id="@+id/tableLayout1"  android:gravity="center_vertical"  android:background="#000000"  android:stretchColumns="0,3"  >  <!-- 第一行 -->  <TableRow android:id="@+id/tableRow1"   android:layout_width="wrap_content"   android:layout_height="wrap_content">   <TextView/>   <TextView android:text="用戶名"    android:id="@+id/textView1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textSize="24px"    android:textColor="#FFFFFF"/>   <EditText android:id="@+id/editView1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="#FFFFFF"    android:minWidth="200px"/>   <TextView/>  </TableRow>  <!-- 第二行 -->  <TableRow android:id="@+id/tableRow2"   android:layout_marginTop="10px"   android:layout_width="wrap_content"   android:layout_height="wrap_content">   <TextView/>   <TextView android:text="密 碼:"    android:id="@+id/textView2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textSize="24px"    android:textColor="#FFFFFF"/>   <EditText android:id="@+id/editView2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="#FFFFFF"    android:textSize="24px"    android:inputType="textPassword"/>   <TextView/>  </TableRow>  <!-- 第三行 -->  <TableRow android:id="@+id/tableRow3"   android:layout_width="wrap_content"   android:layout_height="wrap_content">   <TextView/>   <Button android:text="登錄"    android:id="@+id/button1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"/>   <Button android:text="退出"    android:id="@+id/button2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"/>   <TextView/>  </TableRow> </TableLayout> 

效果如圖

Android,QQ,狀態欄,登錄

編寫用于布局列表項內容的XML布局文件items.xml,在該文件中,采用水平線形布局管理器,并在該布局管理器中添加ImageView組件和一個TextView組件,分別用于顯示列表項中的圖標和文字。
res/layout/items.xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical" >  <ImageView   android:id="@+id/image"   android:paddingLeft="10px"   android:paddingTop="20px"   android:paddingBottom="20px"   android:adjustViewBounds="true"   android:maxWidth="72px"   android:maxHeight="72px"   android:layout_width="wrap_content"   android:layout_height="wrap_content"/>  <TextView   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:padding="10px"   android:layout_gravity="center"   android:id="@+id/title"/> </LinearLayout> 

MainActivity:

package com.example.test;  import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;   import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Notification; import android.app.NotificationManager; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleAdapter; import android.widget.TableRow;  public class MainActivity extends Activity {  //第一個通知的ID  final int NOTIFYID_1=123;  //用戶名  private String user="匿名";  //定義通知管理器對象  private NotificationManager notificationManager;  @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);      //獲取通知管理器,用于發送通知   notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);   Button button1=(Button)findViewById(R.id.button1);//獲取登錄按鈕   //為登錄按鈕添加單擊事件監聽   button1.setOnClickListener(new OnClickListener() {        @Override    public void onClick(View view) {      EditText etUser=(EditText)findViewById(R.id.editView1);     if(!"".equals(etUser.getText())){      user=etUser.getText().toString();     }     sendNotification();//發送通知    }   });      //獲取退出按鈕   Button button2=(Button)findViewById(R.id.button2);   //為退出按鈕添加單擊事件監聽器   button2.setOnClickListener(new OnClickListener() {        @Override    public void onClick(View view) {      notificationManager.cancel(NOTIFYID_1);     //讓布局中的第一行顯示     ((TableRow)findViewById(R.id.tableRow1)).setVisibility(View.VISIBLE);     //讓布局中的第二行顯示     ((TableRow)findViewById(R.id.tableRow2)).setVisibility(View.VISIBLE);     //改變"更改登錄狀態"按鈕上顯示的文字     ((Button)findViewById(R.id.button1)).setText("登錄");    }   });  }    /*在sendNotification方法中,首先創建一個AlertDialog.Builder對象,并為其   * 指定要顯示的對話框的圖標、標題等,然后創建兩個用于保存列表項圖片id和   * 文字的數組,并將這些圖片id和文字添加到List集合中,再創建一個SimpleAdapter   * 簡單適配器,并將該適配器作為Builder對象的適配器用于為列表對話框添加帶   * 圖標的列表項,最后創建對話框并顯示。*/  //發送通知  private void sendNotification() {   Builder builder=new AlertDialog.Builder(MainActivity.this);   builder.setIcon(R.drawable.in);//定義對話框的圖標   builder.setTitle("我的登錄狀態:");//定義對話框的標題   final int[] imageId=new int[]{R.drawable.img1,R.drawable.img2,R.drawable.img3,     R.drawable.img4};//定義并初始化保存圖片id的數組   //定義并初始化保存列表項文字的數組   final String[]  //創建一個List集合   List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();   //通過for循環將圖片id和列表項文字放到Map中,并添加到List集合中   for(int i=0;i<imageId.length;i++){    Map<String,Object> map=new HashMap<String,Object>();    map.put("image", imageId[i]);    map.put("title",title[i]);    listItems.add(map);   }   final SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,     listItems,R.layout.item,new String[]{"title","image"},new int[]{R.id.title,R.id.image});   builder.setAdapter(adapter, new DialogInterface.OnClickListener() {        @Override    public void onClick(DialogInterface dialog, int which) {     Notification notify=new Notification();     notify.icon=imageId[which];     notify.tickerText=title[which];     notify.when=System.currentTimeMillis();//設置發送時間     notify.defaults=Notification.DEFAULT_SOUND;//設置默認聲音     //設置事件信息     notify.setLatestEventInfo(MainActivity.this, user, title[which], null);     //通過通知管理器發送通知     notificationManager.notify(NOTIFYID_1,notify);     //讓布局中的第一行不顯示     ((TableRow)findViewById(R.id.tableRow1)).setVisibility(View.INVISIBLE);     //讓布局中的第二行不顯示     ((TableRow)findViewById(R.id.tableRow2)).setVisibility(View.INVISIBLE);     //改變"登錄"按鈕上顯示的文字     ((Button)findViewById(R.id.button1)).setText("更改登錄狀態");    }   });   builder.create().show();//創建對話框并顯示  } } 

 運行效果和開始描述的效果相同,實現成功!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 砀山县| 南城县| 博白县| 福鼎市| 中卫市| 阳山县| 互助| 大洼县| 象山县| 尼勒克县| 汤阴县| 遂川县| 荥经县| 东莞市| 龙山县| 贵南县| 彭山县| 张掖市| 策勒县| 和田县| 新巴尔虎左旗| 旬阳县| 兴安县| 云梦县| 崇州市| 育儿| 大渡口区| 普定县| 宿松县| 邵东县| 无锡市| 宜川县| 郸城县| 新化县| 威海市| 长葛市| 甘孜县| 金昌市| 石家庄市| 筠连县| 新和县|