android普及一 android之按钮单击事件及监听器的实现方式 android之SharedPreferences简介 context和getApplicationContext()介绍 pendingIntent 和 Notification Android Fragment用法之给Activity创建事件回调 android之startActivityForResult的使用

android之bundle是什么_什么是bundle

Bundle,是Android开发中的一个类,用于Activity之间传输数据用。

[java]  view plain  copy
  1. Intent it = new Intent(A.this,B.class);  
  2.   
  3. Bundle bundle = new Bundle();  
  4.   
  5. bundle.putString("name","张三");  
  6.   
  7. it.putExtrats(bundle);  
  8.   
  9. startActivity(it);  

这样就把name为张三这个数据从A传到了B.

===================================================================

android之按钮单击事件及监听器的实现方式

第一种,匿名内部类作为事件监听类.

[java]  view plain  copy
  1. <span style="font-size:14px;">      Button button = (Button) findViewById(R.id.button);  
  2.         button.setOnClickListener(new OnClickListener() {  
  3.               
  4.             @Override  
  5.             public void onClick(View v) {  
  6.                 System.out.println("匿名内部类作为事件监听器");  
  7.             }  
  8.         });</span>  
大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!
对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。


第二种:内部类作为监听器

将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!!
第三种:Activity本身作为事件监听器
这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。
上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。

第四种:外部类作为监听器
ButtonTest类

当用户单击button按钮时,程序将会触发MyButtonListener监听器
外部MyButtonListener类


第五种:直接绑定到标签
Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx
(View source)
的方法的方法名。在布局文件中为button添加属性,如一代码:

为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。
下面是该界面布局对应的java代码:

=====================================================

android之activity的生命周期详解

刚在看mars老师的视频,看到activity的生命周期,就看了一下,总结了一下.下面是各函数的调用时机



为了更清楚的看清楚工作的具体过程,举例如下:

,建立两个activity,一个main,一个another,在main里面放置button加监听器跳转向another,在每个复写的activity的状态方法里都加一个log输出,比如onCreate里面输出main:onCreate;

从启动到点击按钮,再从another按返回键返回main,输出如下:

启动:

main:onCreate

main:onStart

main:onResume

点击button启动another

main:onPause

another:onCreate

another:onStart

another:onResume

main:onStop

点击返回

another:onPause

main:onRestart

main:onStart

main:onResume

another:onStop

another:onDestory

下面是各个状态时候的特点



========================================================

android之SharedPreferences简介

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存.

 

用法

2个activity 之间的数据传递除了可以通过intent来传递,还可以使用SharedPreferences来共享数据的方式
SharedPreferences 用法很简单.

在A中设置

Java代码
[java]  view plain  copy
  1. Editor editor = getSharedPreferences("data"0).edit();  
  2. editor.putString("item","hello getSharedPreferences");  
  3. editor.commit();  


 

B中获取

Java代码
[java]  view plain  copy
  1. SharedPreferences sharedata = getSharedPreferences("data"0);  
  2. String item = sharedata.getString("item"null);  
  3. Log.v("cola","data="+data);  

在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs 目录下。

使用步骤:

1、得到SharedPreferences对象

2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。

3、向SharedPreferences.Editor对象中添加数据。

4、调用commit方法将添加的数据提交。

详细过程:

1、得到SharedPreferences对象

方法1: 
Context.getSharedPreferences(文件名称,操作模式) 
文件名称不存在就会创建一个,操作模式有两种: 
MODE_PRIVATE:默认操作模式,直接在把第二个参数写0就是默认使用这种操作模式,这种模式表示只有当前的应用程序才可以对当前这个SharedPreferences文件进行读写。 共享的范围据现在同一个Package包中
MODE_MULTI_PRIVATE:用于多个进程共同操作一个SharedPreferences文件。

注:MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE这两种模式已经在android 4.2版本以后废弃了。 
方法2: 
Activity.getPreferences(操作模式) 
使用这个方法会自动将当前活动的类名作为SharedPreferences的文件名,底层调用的是下面这个方法 
Activity.getSharedPreferences(String name, int mode)我们也可以直接调用getSharedPreferences这个方法,传入自定义的名字。 
方法3 
PreferenceManager.getDefaultSharedPreferences(Context) 
使用这个方法会自动使用当前程序的包名作为前缀来命名SharedPreferences文件

2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。

SharedPreferences.Editor editor = getSharedPreferences(“data”,MODE_PRIVATE).edit();

3、向SharedPreferences.Editor对象中添加数据。

editor.putString(“name”,”Lily”); //以键值对形式存储 
editor.putInt(“age”,”20”); //以键值对形式存储 
editor.putBoolean(“married”,false); //以键值对形式存储

4、调用commit方法将添加的数据提交。

editor.commit();

代码示例: 
SharedPreferences pref = MainActivity.this.getSharedPreferences(“data”,MODE_PRIVATE); 
SharedPreferences.Editor editor = pref.edit(); 
editor.putString(“name”,”lily”); 
editor.putString(“age”,”20”); 
editor.putBoolean(“married”,false); 
editor.commit();

如果要读取数据: 
SharedPreferences pref = getSharedPreferences(“data”,MODE_PRIVATE); 
String name = pref.getString(“name”,”“);//第二个参数为默认值 
int age = pref.getInt(“age”,0);//第二个参数为默认值 
boolean married = pref.getBoolean(“married”,false);//第二个参数为默认值

=========================================================

android之LayoutInflater详解_什么是LayoutInflater

作用:LayoutInflater作用是将layout的xml布局文件实例化为View类对象 

对于常见的一个已经载入的Activity, 我们可以使用findViewById方法来获得其中的界面元素. 而对于一个没有被载入或者想要动态载入的界面, 就需要使用inflate来载入了. 

方法: 
   Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Activity基类, 然后在onCreate里面使用setContentView方法来载入一个在xml里定义好的界面. 
其实在Activity里面也可以使用LayoutInflater来载入界面, 通过
getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个 LayoutInflater, 也可以通过LayoutInflater inflater = getLayoutInflater();来获得.然后使用inflate方法来载入layout的xml, 

============================================================

android之View和ViewGroup介绍


View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的.

  View类是它称为“widgets(工具)”的子类的基础,它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。
  ViewGroup类同样为其被称为“Layouts(布局)”的子类奠定了基础,它们提供了象流式布局、表格布局以及相对布局之类的布局架构。
  一般来说,开发Android应用程序的UI界面都不会直接使用View和ViewGroup,而是使用这两大基类的派生类。
  View派生出的直接子类有:AnalogClock,ImageView,KeyboardView, ProgressBar,SurfaceView, TextView,ViewGroup,ViewStub
  View派生出的间接子类有:AbsListView,AbsSeekBar, AbsSpinner, AbsoluteLayout, AdapterView,AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, AutoCompleteTextView,Button,CalendarView, CheckBox, CheckedTextView, Chronometer, CompoundButton,
  ViewGroup派生出的直接子类有:AbsoluteLayout,AdapterView,FragmentBreadCrumbs,FrameLayout, LinearLayout,RelativeLayout,SlidingDrawer
  ViewGroup派生出的间接子类有:AbsListView,AbsSpinner, AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, CalendarView, DatePicker, DialerFilter, ExpandableListView, Gallery, GestureOverlayView,GridView,HorizontalScrollView, ImageSwitcher,ListView,
  这里特别指出,ImageView是布局具有图片效果的UI常用的类,SurfaceView是用来进行游戏开发的与一般View相比较为特殊的非常重要的类,而AbsoluteLayout、 FrameLayout,LinearLayout, RelativeLayout这几个ViewGroup的直接子类是Android UI布局中最基本的布局元素。
=======================================================================

context和getApplicationContext()介绍

getApplicationContext()  返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。
Activity.this  就是context的一个具体 ,返回当前activity的上下文,生命周期只是它所在的Activity,activity 摧毁他就摧毁

====================================================================================

pendingIntent 和 Notification

pendingIntent字面意义:等待的,未决定的Intent。

 要得到一个pendingIntent对象,使用方法类的静态方法

 通过getActivity(Context context, int requestCode, Intent intent, int flags)从系统取得一个用于启动一个Activity的PendingIntent对象,

通过getService(Context context, int requestCode, Intent intent, int flags)从系统取得一个启动Service的PendingIntent对象

通过getBroadcast(Context context, int requestCode, Intent intent, int flags)从系统取得一个用于向BroadcastReceiver发送广播


参数有4个,比较重要的是第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。


pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。

pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。

PendingIntent 可以看作是对 Intent 的包装。 PendingIntent 主要持有的信息是它所包装的 Intent 和当前Application 的 Context 。正由于 PendingIntent 中保存有当前 Application 的 Context ,使它赋予带他程序一种执行的 Intent 的能力,就算在执行时当前 Application 已经不存在了,也能通过存在 PendingIntent里的 Context 照样执行 Intent 
主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送  和   警报器AlarmManager的执行等等。

Android的状态栏通知(Notification)

如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。

步骤:

1 获取通知管理器NotificationManager,它也是一个系统服务

2 建立通知Notification notification = new Notification(icon, null, when);

3 为新通知设置参数(比如声音,震动,灯光闪烁)

4 把新通知添加到通知管理器

发送消息的代码如下:

[java]  view plain  copy
  1. //获取通知管理器  
  2.   
  3. NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)  
  4.   
  5. int icon = android.R.drawable.stat_notify_chat;  
  6.   
  7. long when = System.currentTimeMillis();//通知发生的时间为系统当前时间  
  8.   
  9. //新建一个通知,指定其图标和标题  
  10.   
  11. Notification notification = new Notification(icon, null, when);//第一个参数为图标,第二个参数为短暂提示标题,第三个为通知时间  
  12.   
  13. notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音  
  14.   
  15. notification.flags = Notification.FLAG_AUTO_CANCEL;//点击通知后自动清除通知  
  16.   
  17. Intent openintent = new Intent(this, OtherActivity.class);  
  18.   
  19. PendingIntent contentIntent = PendingIntent.getActivity(this0, openintent, 0);//当点击消息时就会向系统发送openintent意图  
  20.   
  21. notification.setLatestEventInfo(this, “标题”, “我是内容", contentIntent);  
  22.   
  23. mNotificationManager.notify(0, notification);//第一个参数为自定义的通知唯一标识  
  24.    

重点是setLatestEventInfo( )方法的最后一个参数,它是一个PendingIntent,

===============================================================

Android Fragment用法之给Activity创建事件回调

在某些案例中,可能需要Fragment与Activity共享事件。在Fragment内部定义一个回调接口是一个好方法,并且规定由持有它的Activity实现这个回调方法。当Activity通过接口接受回调时,它能在必要时与布局中的其他Fragment共享信息。

例如,如果一个音乐播放器的应用程序在一个Activity中有两个Fragment---一个用来显示歌曲列表(Fragment A),另一个用来显示歌曲信息(Fragment B),然后在列表项目被选中时Fragment A必须告诉Activity,以便它能告诉Fragment B显示对应的歌曲信息。在下面的例子中在Fragment A的内部声明了onMp3ChangedListener接口。

[java]  view plain  copy
  1. public static class FragmentA extends ListFragment {  
  2.     ...  
  3.     //持有它的Activity必须实现这个回调方法  
  4.     public interface onMp3ChangedListener{  
  5.         public void onMp3Changed(int index);//index表示的是歌曲在列表中的序号  
  6.     }  
  7.     ...  
  8. }  

然后,持有这个Fragment的Activity要实现onMp3ChangedListener接口,并且要重写onMp3Changed()方法把来自Fragment A的事件通知给Fragment B。要确保持有Fragment的Activity实现这个接口, Fragment A 的onAttach()回调方法(当Fragment被添加到Activity时系统调用这个方法)通过类型转换onAttach()传入的Activity来实例化一个onMp3ChangedListener的实例。

[java]  view plain  copy
  1. public static class FragmentA extends ListFragment {  
  2.     onMp3ChangedListener mListener;  
  3.     ...  
  4.     @Override  
  5.     public void onAttach(Activity activity) {  
  6.         super.onAttach(activity);  
  7.         try {  
  8.             mListener = (onMp3ChangedListener) activity;  
  9.         } catch (ClassCastException e) {  
  10.             throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");    }  
  11.     ...  
  12. }  

如果这个Activity没有实现这个接口,那么Fragment会抛出ClassCastException异常。

如果成功,那么mListener成员就会拥有Activity实现的onMp3ChangedListener对象的引用,以便Fragment A能够通过onMp3ChangedListener接口定义的回调方法和Activity共享事件。例如,Fragment A继承了ListFragment,那么用户每次点击列表项时,系统都会调用Fragment中的onListItemClick()方法,然后调用onMp3Changed()方法和Activity共享事件:

[java]  view plain  copy
  1. public static class FragmentA extends ListFragment {  
  2.     OnArticleSelectedListener mListener;  
  3.     ...  
  4.     @Override  
  5.     public void onListItemClick(ListView l, View v, int position, long id) {  
  6.                mListener.onMp3Changed(position);  
  7.     }  
  8.     ...  
  9. }  

传递给onListItemClick()的position参数是被点击项目的行ID,Activity(或其他的Fragment)使用这个ID从歌曲列表中获取对应的歌曲信息。

======================================================================



14个简单有用的android源码,适合初学者

1:查看是否有存储卡插入

[java]  view plain  copy
  1. String status=Environment.getExternalStorageState();  
  2. if(status.equals(Enviroment.MEDIA_MOUNTED))  
  3. {  
  4.    ;//说明有SD卡插入  
  5. }  

2:让某个Activity透明

在OnCreate 中不设Layout,然后this.setTheme(R.style.Theme_Transparent);

3:获取屏幕宽高

[java]  view plain  copy
  1. DisplayMetrics dm = new DisplayMetrics();    
  2. //获取窗口属性  
  3. getWindowManager().getDefaultDisplay().getMetrics(dm);      
  4. int screenWidth = dm.widthPixels;    
  5. int screenHeight = dm.heightPixels;  

4:发送短信

[java]  view plain  copy
  1. String body=”this is mms demo”;  
  2. Intent mmsIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”smsto”, number, null));  
  3. mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);  
  4. mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);  
  5. mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);  
  6. startActivity(mmsIntent);  

   5:发送彩信

[java]  view plain  copy
  1. StringBuilder sb = new StringBuilder();  
  2.             sb.append(”file://”);  
  3.             sb.append(fd.getAbsoluteFile());  
  4.             Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”mmsto”, number, null));  
  5.             // Below extra datas are all optional.  
  6.             intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);  
  7.             intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);  
  8.             intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());  
  9.             intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);  
  10.             intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);  
  11.             startActivity(intent);  

7:发送Mail

[java]  view plain  copy
  1. mime = “img/jpg”;  
  2.          shareIntent.setDataAndType(Uri.fromFile(fd), mime);  
  3.          shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fd));  
  4.          shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);  
  5.          shareIntent.putExtra(Intent.EXTRA_TEXT, body);  

8:注册一个 BroadcastReceiver

[java]  view plain  copy
  1. registerReceiver(mMasterResetReciever, new IntentFilter(”oms.action.MASTERRESET”));  
  2. private BroadcastReceiver mMasterResetReciever = new BroadcastReceiver() {  
  3.         public void onReceive(Context context, Intent intent){  
  4.             String action = intent.getAction();  
  5.             if(”oms.action.MASTERRESET”.equals(action)){  
  6.                 RecoverDefaultConfig();  
  7.             }  
  8.         }  
  9.     };  

9:定义ContentObserver,监听某个数据表

[java]  view plain  copy
  1. private ContentObserver mDownloadsObserver = new DownloadsChangeObserver(Downloads.CONTENT_URI);  
  2. private class DownloadsChangeObserver extends ContentObserver {  
  3.         public DownloadsChangeObserver(Uri uri) {  
  4.             super(new Handler());  
  5.         }  
  6.         @Override  
  7.         public void onChange(boolean selfChange) {}    
  8.         }  

10:获得 手机UA

[java]  view plain  copy
  1. public String getUserAgent() {   
  2.   
  3. String user_agent = ProductProperties.get(ProductProperties.USER_AGENT_KEY, null);  
  4.   
  5. return user_agent;   
  6.   
  7. }  

11:清空手机上Cookie

[java]  view plain  copy
  1. CookieSyncManager.createInstance(getApplicationContext());   
  2.   
  3. CookieManager.getInstance().removeAllCookie();  

12:建立GPRS 连接

[java]  view plain  copy
  1. private boolean openDataConnection() {   
  2.   
  3. DataConnection conn = DataConnection.getInstance();  
  4.   
  5.  if (connectMode == 0) {   
  6.   
  7.   ret = conn.openConnection(mContext, “cmwap”, “cmwap”, “cmwap”);  
  8.   
  9.  } else {   
  10.   
  11.   ret = conn.openConnection(mContext, “cmnet”, “”, “”);   
  12.   
  13. }  
  14.   
  15. }  

13:PreferenceActivity 用法

[java]  view plain  copy
  1. public class Setting extends PreferenceActivity{  
  2.   
  3.  public void onCreate(Bundle savedInstanceState) {   
  4.   
  5.  super.onCreate(savedInstanceState);  
  6.   
  7.  addPreferencesFromResource(R.xml.settings);  
  8.   
  9.  }  
  10.   
  11. }  

Setting.xml:

[html]  view plain  copy
  1. android:key=”seting2″   
  2.   
  3. android:title=”@string/seting2″   
  4.   
  5. android:summary=”@string/seting2″/>   
  6.   
  7. android:key=”seting1″   
  8.   
  9. android:title=”@string/seting1″   
  10.   
  11. android:summaryOff=”@string/seting1summaryOff”   
  12.   
  13. android:summaryOn=”@stringseting1summaryOff”/>  

14:通过 HttpClient从指定server获取数据

[java]  view plain  copy
  1.  DefaultHttpClient httpClient = new DefaultHttpClient();   
  2.   
  3. HttpGet method = new HttpGet(“http://www.baidu.com/1.html”);   
  4.   
  5. HttpResponse resp;   
  6.   
  7. Reader reader = null;   
  8.   
  9. try {   
  10.   
  11. // AllClientPNames.TIMEOUT   
  12.   
  13. HttpParams params = new BasicHttpParams();   
  14.   
  15. params.setIntParameter(AllClientPNames.CONNECTION_TIMEOUT, 10000);   
  16.   
  17. httpClient.setParams(params);  
  18.   
  19. resp = httpClient.execute(method);   
  20.   
  21. int status = resp.getStatusLine().getStatusCode();   
  22.   
  23. if (status != HttpStatus.SC_OK)  
  24.   
  25.  return false;  
  26.   
  27.  // HttpStatus.SC_OK;  
  28.   
  29.  return true;  
  30.   
  31.  } catch (ClientProtocolException e) {   
  32.   
  33. // TODO Auto-generated catch block   
  34.   
  35. e.printStackTrace();   
  36.   
  37. catch (IOException e) {   
  38.   
  39. // TODO Auto-generated catch block e.printStackTrace();  
  40.   
  41.  } finally {   
  42.   
  43. if (reader != null)   
  44.   
  45. try {  
  46.   
  47.  reader.close();   
  48.   
  49. catch (IOException e) {   
  50.   
  51. // TODO Auto-generated   
  52.   
  53. catch block e.printStackTrace();  
  54.   
  55.  }   
  56.   
  57. }  
///////////////////////////////////////////////////////////////////////////////////////////

14个简单有用的android源码,适合初学者

一.android:singleLine

设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如

[html]   view plain copy
  1. android:text="test_ singleLine "  
  2. android:singleLine="true"  
  3. android:layout_width="20dp"  

将只显示"t..."

如果不设置singleLine或者设置为false,文本将自动换行

 

二.android:cacheColorHint="@null"
 
 

cacheColorHint属性,很多人希望能够改变一下ListView的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性

[html]  view plain copy
  1. android:background="@drawable/bg"  

不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。

如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那只要将android:cacheColorHint指定为透明(#00000000)就可以了

 

三.android:fadingEdge="@null"

上边和下边有黑色的阴影,

[html]  view plain copy
  1. android:fadingEdge="none"  

设置后没有阴影了

 

四.android:divider="@null"

该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线

[html]  view plain copy
  1. android:divider="@drawable/list_driver"  

其中  @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置

[html]  view plain copy
  1. android:divider="@drawable/@null"  

就可以了

 

五.android:listSelector="@android:color/transparent"
当你不使用android:listSelector属性,默认会显示选中的item为橙黄底色,有时候我们需要去掉这种效果:
[html]  view plain copy
  1. android:listSelector="#00000000"  
进行上面的设置之后,ListView点击item时就没有任何现象了
 
六.android:transcriptMode="alwaysScroll" 
需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。
[html]  view plain copy
  1. android:transcriptMode="alwaysScroll"  <span> </span>  
 
七.android:scrollbars="none"

作用是隐藏listView的滚动条,

[html]  view plain copy
  1. android:scrollbars="none"  

[java]  view plain copy
  1. setVerticalScrollBarEnabled(true);  

的效果是一样的,不活动的时候隐藏,活动的时候也隐藏

八.android:fadeScrollbars="true"
配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。
 
九.android:fastScrollEnabled="true"
很多开发者不知道ListView列表控件的快速滚动滑块是如何启用的,其实辅助滚动滑块只需要一行代码就可以搞定,如果你使用XML布局只需要在ListView节点中加入
[html]  view plain copy
  1. android:fastScrollEnabled="true"  
这个属性即可,而对于Java代码可以通过
[java]  view plain copy
  1. myListView.setFastScrollEnabled(true);   
来控制启用,参数false为隐藏。 还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块,同时该方法仍然是AbsListView的基础方法,可以在ListView或GridView等子类中使用快速滚动辅助。
 
十.android:drawSelectorOnTop
[html]  view plain copy
  1. android:drawSelectorOnTop="true"   
点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到
[html]  view plain copy
  1. android:drawSelectorOnTop="false"  

点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

//////////////////////////////////////////////////////////////////////////////////////////////////

android之startActivityForResult的使用

在Android中startActivityForResult主要作用就是:

A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A-Activtiy


//看效果


//看代码

[java]   view plain copy
  1. package jason.actres;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.TextView;  
  10.   
  11. public class ActivityResultDemoActivity extends Activity  
  12. {  
  13.     private Button button_start_task;  
  14.     private TextView TextView_result;  
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState)  
  17.     {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         button_start_task=(Button) findViewById(R.id.button_start_task);  
  21.         TextView_result=(TextView) findViewById(R.id.TextView_result);  
  22.         button_start_task.setOnClickListener(new button_start_task_Listener());  
  23.     }  
  24.     private class button_start_task_Listener implements OnClickListener  
  25.     {  
  26.         public void onClick(View v)  
  27.         {  
  28.             Intent intent=new Intent(ActivityResultDemoActivity.this,SimpleTaskActivity.class);  
  29.             //关键点来了,使用startActivityForResult来启动  
  30.             startActivityForResult(intent, 100);  
  31.         }  
  32.     }  
  33.     /** 
  34.      * 复写onActivityResult,这个方法 
  35.      * 是要等到SimpleTaskActivity点了提交过后才会执行的 
  36.      */  
  37.     @Override  
  38.     protected void onActivityResult(int requestCode, int resultCode, Intent data)  
  39.     {  
  40.         //可以根据多个请求代码来作相应的操作  
  41.         if(20==resultCode)  
  42.         {  
  43.             String bookname=data.getExtras().getString("bookname");  
  44.             String booksale=data.getExtras().getString("booksale");  
  45.             TextView_result.setText("书籍名称:"+bookname+"书籍价钱"+booksale+"元");  
  46.         }  
  47.         super.onActivityResult(requestCode, resultCode, data);  
  48.     }  
  49. }  

//任务处理类

[java]   view plain copy
  1. package jason.actres;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10.   
  11. public class SimpleTaskActivity extends Activity  
  12. {  
  13.     private EditText EditText_bookname;  
  14.     private EditText EditText_booksale;  
  15.     private Button Button_task_fulfill;  
  16.   
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState)  
  19.     {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main2);  
  22.           
  23.         EditText_bookname=(EditText) findViewById(R.id.EditText_bookname);  
  24.         EditText_booksale=(EditText) findViewById(R.id.EditText_booksale);  
  25.         Button_task_fulfill=(Button) findViewById(R.id.Button_task_fulfill);  
  26.         Button_task_fulfill.setOnClickListener(new Button_task_fulfill_Listener());  
  27.     }  
  28.     private class Button_task_fulfill_Listener implements OnClickListener  
  29.     {  
  30.         public void onClick(View v)  
  31.         {  
  32.             String str_bookname=EditText_bookname.getText().toString();  
  33.             String str_booksale=EditText_booksale.getText().toString();  
  34.               
  35.             //判断空,我就不判断了。。。。  
  36.             Intent data=new Intent();  
  37.             data.putExtra("bookname", str_bookname);  
  38.             data.putExtra("booksale", str_booksale);  
  39.             //请求代码可以自己设置,这里设置成20  
  40.             setResult(20, data);  
  41.             //关闭掉这个Activity  
  42.             finish();  
  43.         }  
  44.     }  
  45. }  

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


猜你喜欢

转载自blog.csdn.net/weixin_38503885/article/details/80655567