Android0828<十>(自定义的AlertDialog,Popup Window,Notification)
2015-08-29 12:06
609 查看
自定义Dialog 和Shape
自定义的Dialog需要先建立一个drawable放Shape来设置dialog的颜色、边框、和圆角,以下是几个属性corners圆角率
<corners android:bottomLeftRadius="10dp"左下角为半径为10dp的圆角 android:topLeftRadius="10dp"左上角为半径为10dp的圆角 android:topRightRadius="10dp"右上角为半径为10dp的圆角 android:bottomRightRadius="10dp"右下角为半径为10dp的圆角 android:radius="10dp" 四角都为半径为10dp的圆角 />
solid Dialog背景颜色
<solid android:color="#BFEFFF"/>
stroke android:color边框颜色 android:width边框大小
<stroke android:color="#9AFF9A" android:width="1dp"/>
若要设置dialog背景也为圆角,需要在styles中设置dialog的theme,注意的是在dialog中添加theme
<style parent="@android:Theme.Dialog" name="NoDialogTitle"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
自定义的activity_dialog_define.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" android:background="@mipmap/image_girlsmall" > <TextView android:id="@+id/text_dialog_define_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是自定义标题" android:textColor="#50ff0000" android:gravity="center" android:padding="10dp" android:background="@drawable/bac_dialog_define"/> <TextView android:id="@+id/text_dialog_define_massage" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是自定义的内容" android:gravity="center" android:padding="20dp"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_dialog_cannel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="cannel" android:background="@drawable/bac_dialog_btn_anncel"/> <Button android:id="@+id/btn_dialog_sure" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="OK" android:background="@drawable/bac_dialog_sure"/> </LinearLayout> </LinearLayout>
修改的主题styles
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style parent="@android:Theme.Dialog" name="NoDialogTitle"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
</resources>
设置背景圆角以及按钮形状的drawable
bac_dialog_defien.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:topRightRadius="10dp" android:topLeftRadius="10dp"/> <stroke android:color="#FFFACD" android:width="1dp"/> <solid android:color="#FFA54F" /> </shape>
bac_dialog_btn_annel.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:bottomLeftRadius="10dp" /> <solid android:color="#BFEFFF"/> <stroke android:color="#9AFF9A" android:width="1dp"/> </shape>
bac_dialog_sure.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:bottomRightRadius="10dp"/> <solid android:color="#BFEFFF"/> <stroke android:color="#9AFF9A" android:width="1dp"/> </shape>
activity_dialog.xml
<Button android:id="@+id/button_dialog_define" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="自定义的Dialog"/>
AlertDialogActivity.java
private Button btn_dialog_define; private Dialog dialog; btn_dialog_define= (Button) findViewById(R.id.button_dialog_define); btn_dialog_define.setOnClickListener(this);
public void onClick(View v) { switch(v.getId()){ case R.id.button_dialog_define: dialog_define(); break; default:break; } }
private void dialog_define() { dialog=new Dialog(AlertDialogActivity.this, R.style.NoDialogTitle); LayoutInflater inflater=getLayoutInflater(); View dialogView=inflater.inflate(R.layout.activity_dialog_define,null); TextView textview_title= (TextView) dialogView.findViewById(R.id.text_dialog_define_title); TextView textview_massage= (TextView) dialogView.findViewById(R.id.text_dialog_define_massage); Button button_cannel= (Button) dialogView.findViewById(R.id.btn_dialog_cannel); Button button_sure= (Button) dialogView.findViewById(R.id.btn_dialog_sure); textview_title.setText("这是新的标题"); textview_massage.setText("这是新的内容"); button_cannel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); button_sure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "点击的是OK", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(dialogView); dialog.show(); }
PickerDialog
dialog不仅可以弹出对话框,还可以弹出时间日期,PickerDialog就可以实现private void timepicker_dialog() { mCalendar= Calendar.getInstance(); TimePickerDialog timePickerDialog=new TimePickerDialog(AlertDialogActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mCalendar.set(Calendar.HOUR,hourOfDay); mCalendar.set(Calendar.MINUTE,minute); SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日HH:mm"); format.format(mCalendar.getTime()); Toast.makeText(getApplicationContext(), "这个造型是" + format.format(mCalendar.getTime()), Toast.LENGTH_SHORT).show(); } },mCalendar.get(Calendar.HOUR),mCalendar.get(Calendar.MINUTE),true); timePickerDialog.show(); }
private void datepicker_dialog() { mCalendar= Calendar.getInstance(); final DatePickerDialog pickerDialog=new DatePickerDialog(AlertDialogActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mCalendar.set(year,monthOfYear,dayOfMonth); SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日"); format.format(mCalendar.getTime()); Toast.makeText(getApplicationContext(), "这个造型是" + format.format(mCalendar.getTime()), Toast.LENGTH_SHORT).show(); } },mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH)); pickerDialog.show(); }
实例:
activity_alertdialog.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/image_bac_green"> <Button android:id="@+id/button_alertdialog" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出选择的AlertDialg"/> <Button android:id="@+id/button_alertdialog_muiltchoice" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出多选框的AlertDialg"/> <Button android:id="@+id/button_alertdialog_select" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出简单的AlertDialg"/> <Button android:id="@+id/button_alertdialog_choice" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出单选框的的AlertDialg"/> <Button android:id="@+id/btn_timepicker_dialog" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出时间的pickerDialog"/> <Button android:id="@+id/button_pickerdialog" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="弹出日期的PickerDialog"/> <Button android:id="@+id/button_dialog_define" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="自定义的Dialog"/> </LinearLayout>
AlertDialogActivity.java
package com.example.administrator.myapplication; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.DatePicker; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.TimePicker; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Calendar; /** * Created by Administrator on 2015/8/29. */ public class AlertDialogActivity extends Activity implements View.OnClickListener { private Button button_alterdialog_choice; private String []mSex={"男","女","其他"}; private String sex; private Button button_alterdialog_multichoice; private String []hobits={"旅游","骑车","登山","下棋","健身","跑步","游泳","打球"}; private boolean []isCheck=new boolean[hobits.length]; private StringBuffer hobit; private String []mDialog={"第一条数据","第二条数据","第三条数据","第四条数据"}; private Button btn_dialog_define; private Dialog dialog; private Button button_pickerdialog; private Calendar mCalendar; private Button button_timepicker_dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alertdialog); Button button_alterdialog= (Button) findViewById(R.id.button_alertdialog); button_alterdialog.setOnClickListener(this); Button button_alterdialog_select= (Button) findViewById(R.id.button_alertdialog_select); button_alterdialog_select.setOnClickListener(this); button_alterdialog_choice= (Button) findViewById(R.id.button_alertdialog_choice); button_alterdialog_choice.setOnClickListener(this); button_alterdialog_multichoice= (Button) findViewById(R.id.button_alertdialog_muiltchoice); button_alterdialog_multichoice.setOnClickListener(this); btn_dialog_define= (Button) findViewById(R.id.button_dialog_define); btn_dialog_define.setOnClickListener(this); button_pickerdialog= (Button) findViewById(R.id.button_pickerdialog); button_pickerdialog.setOnClickListener(this); button_timepicker_dialog= (Button) findViewById(R.id.btn_timepicker_dialog); button_timepicker_dialog.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.button_alertdialog: AlertDialog(); break; case R.id.button_alertdialog_select: AlertDialogSelect(); break; case R.id.button_alertdialog_choice: AlertDialogChoice(); break; case R.id.button_alertdialog_muiltchoice: AlertDialogMultiChoice(); break; case R.id.button_dialog_define: dialog_define(); break; case R.id.button_pickerdialog: datepicker_dialog(); break; case R.id.btn_timepicker_dialog: timepicker_dialog(); break; default:break; } } private void timepicker_dialog() { mCalendar= Calendar.getInstance(); TimePickerDialog timePickerDialog=new TimePickerDialog(AlertDialogActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mCalendar.set(Calendar.HOUR,hourOfDay); mCalendar.set(Calendar.MINUTE,minute); SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日HH:mm"); format.format(mCalendar.getTime()); Toast.makeText(getApplicationContext(), "这个造型是" + format.format(mCalendar.getTime()), Toast.LENGTH_SHORT).show(); } },mCalendar.get(Calendar.HOUR),mCalendar.get(Calendar.MINUTE),true); timePickerDialog.show(); } private void datepicker_dialog() { mCalendar= Calendar.getInstance(); final DatePickerDialog pickerDialog=new DatePickerDialog(AlertDialogActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mCalendar.set(year,monthOfYear,dayOfMonth); SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日"); format.format(mCalendar.getTime()); Toast.makeText(getApplicationContext(), "这个造型是" + format.format(mCalendar.getTime()), Toast.LENGTH_SHORT).show(); } },mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH)); pickerDialog.show(); } private void dialog_define() { dialog=new Dialog(AlertDialogActivity.this, R.style.NoDialogTitle); LayoutInflater inflater=getLayoutInflater(); View dialogView=inflater.inflate(R.layout.activity_dialog_define,null); TextView textview_title= (TextView) dialogView.findViewById(R.id.text_dialog_define_title); TextView textview_massage= (TextView) dialogView.findViewById(R.id.text_dialog_define_massage); Button button_cannel= (Button) dialogView.findViewById(R.id.btn_dialog_cannel); Button button_sure= (Button) dialogView.findViewById(R.id.btn_dialog_sure); textview_title.setText("这是新的标题"); textview_massage.setText("这是新的内容"); button_cannel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); button_sure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "点击的是OK", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(dialogView); dialog.show(); } private void AlertDialogMultiChoice() { AlertDialog.Builder builder_multichoice=new AlertDialog.Builder(AlertDialogActivity.this); builder_multichoice.setMultiChoiceItems(hobits, isCheck, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { isCheck[which]=isChecked; } }); builder_multichoice.setNeutralButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { button_alterdialog_multichoice.setText("AlertDialg_MultiChoice"); } }); builder_multichoice.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { hobit=new StringBuffer(); for(int i=0;i<isCheck.length;i++){ if(isCheck[i]){ hobit.append(hobits[i]); } } button_alterdialog_multichoice.setText("你的爱好是"+hobit); } }); AlertDialog dialog_multichoice=builder_multichoice.create(); dialog_multichoice.show(); } private void AlertDialogChoice() { AlertDialog.Builder builder_choice=new AlertDialog.Builder(AlertDialogActivity.this); builder_choice.setSingleChoiceItems(mSex, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { sex = mSex[which]; Toast.makeText(getApplication(), "您的性别是" + mSex[which], Toast.LENGTH_SHORT).show(); } }); builder_choice.setNeutralButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder_choice.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { button_alterdialog_choice.setText("您的性别是"+sex); } }); AlertDialog dialog_choice=builder_choice.create(); dialog_choice.show(); } private void AlertDialogSelect() { AlertDialog.Builder builder_select=new AlertDialog.Builder(AlertDialogActivity.this); builder_select.setTitle("可选择的dialog"); builder_select.setItems(mDialog, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "选择的是" + which + "个", Toast.LENGTH_SHORT).show(); } }); AlertDialog dialog_select=builder_select.create(); builder_select.show(); } private void AlertDialog() { AlertDialog.Builder builder=new AlertDialog.Builder(AlertDialogActivity.this); builder.setIcon(R.mipmap.jie2).setTitle("我是AlertDialog标题").setMessage("我是AlertDialog内容" ).setNegativeButton("NegativeButton", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "点击的是Negative", Toast.LENGTH_SHORT).show(); } }).setNeutralButton("Neutral", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "点击的是Neutral", Toast.LENGTH_SHORT).show(); } }).setPositiveButton("Positive", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "点击的是Positive", Toast.LENGTH_SHORT).show(); } }); AlertDialog dialog=builder.create(); dialog.show(); } }
PopupWindow
需要设置XML来放要显示的内容setWidth设置宽度
setHeight设置高度
setContentView
setFocusable
setOutsideTouchable
showAsDropDown
activity_poppwindow.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/dog"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="第一个文本"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="第二个文本"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="第三个文本"/> </LinearLayout>
activity_popuwindow.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn_popuwindow" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn_popuwindow"/> </LinearLayout>
PopuWindowActivity.java
package com.example.administrator.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.PopupWindow; /** * Created by Administrator on 2015/8/29. */ public class PopuWindowActivity extends Activity implements View.OnClickListener{ private PopupWindow popupWindow; private Button button_popuwindow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_popuwindow); button_popuwindow= (Button) findViewById(R.id.btn_popuwindow); button_popuwindow.setOnClickListener(this); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_BACK){ if (popupWindow!=null&&popupWindow.isShowing()){ popupWindow.dismiss(); return true; } } return super.onKeyDown(keyCode, event); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.btn_popuwindow: popuwindow(); break; default:break; } } private void popuwindow() { popupWindow=new PopupWindow(PopuWindowActivity.this); View view=getLayoutInflater().inflate(R.layout.activity_poppuwindow,null); popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setContentView(view); popupWindow.setFocusable(false); popupWindow.setOutsideTouchable(true); popupWindow.showAsDropDown(button_popuwindow); } }
Notification
·通知是出现在状态栏的提醒机制·当用户打开它之后,会显示信息,还可以和用户进行交互,并处理用户选择事件
·Notification使用NotificationManager来管理
·创建一个Notification的步骤如下
1、得到NotificationManager的引用
2、初始化一个Notification的对象
3、设置Notification的参数
4、使用NotificationManager的notify(int,Notification)方法发出通知
activity_notify.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/image_bac_green"> <Button android:id="@+id/button_notify" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="消息通知" android:background="@color/button" /> <Button android:id="@+id/button_notify_cannel" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="取消通知" android:background="@color/button" /> <Button android:id="@+id/button_notify_send" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送消息" android:background="@color/button" /> </LinearLayout>
NotificationActivity.java
package com.example.administrator.myapplication; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; /** * Created by Administrator on 2015/8/28. */ public class NotifitationActivity extends Activity implements View.OnClickListener{ private NotificationManager mNotificationManager; private Button button_notify; private Button Button_notify_cannel; private Button button_notify_send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_notify); mNotificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);//初始化NotificationManager button_notify= (Button) findViewById(R.id.button_notify); button_notify.setOnClickListener(this); Button_notify_cannel= (Button) findViewById(R.id.button_notify_cannel); Button_notify_cannel.setOnClickListener(this); button_notify_send= (Button) findViewById(R.id.button_notify_send); button_notify_send.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.button_notify: notification(); break; case R.id.button_notify_cannel: mNotificationManager.cancel(1);//取消id为1的通知 break; case R.id.button_notify_send: notificationSend(); break; default:break; } } private void notificationSend() { Intent intetnsend=new Intent(getApplicationContext(),NotifitationActivity.class);//设置PendingIntent事件 PendingIntent pendsend=PendingIntent.getActivity(getApplicationContext(),1,intetnsend,PendingIntent.FLAG_ONE_SHOT);//设置Pendingintent的使用方式 Notification notifitationsend=new Notification.Builder(NotifitationActivity.this).setSmallIcon(R.mipmap.jie2) .setTicker("我是一个消息").setContentTitle("消息标题").setContentText("消息文本") .setContentInfo("消息内容").setContentIntent(pendsend).setAutoCancel(true).setWhen(System.currentTimeMillis()).build(); mNotificationManager.notify(2,notifitationsend);//通知管理器将消息添加 } private void notification() { Notification notification=new Notification();//初始化notification notification.icon= R.mipmap.image_boy;//设置通知图标 notification.tickerText="我是一个通知消息";//设置状态栏文本 notification.flags=Notification.FLAG_AUTO_CANCEL;//设置可以取消 Intent intent=new Intent(getApplicationContext(),CheckBoxActivity.class);//设置PendingIntent事件 PendingIntent pend=PendingIntent.getActivity(getApplicationContext(),1,intent,PendingIntent.FLAG_ONE_SHOT);//设置Pendingintent的使用方式 notification.setLatestEventInfo(getApplicationContext(), "我是标题","内容是", pend);//设置显示的内容 notification.when=System.currentTimeMillis();//设置触发时间 mNotificationManager.notify(2, notification);//通知管理器将消息添加 } }
相关文章推荐
- Android在线切换主题(换肤),支持直接替换整个布局
- android java.lang.IllegalStateException异常产生的原因及解决办法 Offending field: mSpans
- android再按一次退出程序提示
- android开发网文搜集
- 关于android 自定义TitleBar 会遇到的问题
- 【Android】Fragment真正意义上的onResume和onPause
- Android5.1 Telephony流程分析——拨打电话流程(MO CALL)
- Android DownloadManager 的使用及断点续传
- Android:透明状态栏的效果实现
- Android开发个人
- Android viewPager.setOnPageChangeListener()方法过时怎么办
- Android的XML解析
- 在android studio中,使用getAssets获取文件的问题
- android开发SQLite之getReadableDatabase() 和 getWritableDatabase()方法
- Android-Activity与Fragment之间传递数据
- 8.28 Android学习日记
- Android错误之android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
- 解决Android中viewpage预加载的问题
- Android Animation 动画的使用方法和介绍
- android 判断手机中是否有SD卡,USB。静态判断