码迷,mamicode.com
首页 > 移动开发 > 详细

Android搜索框/滚动视图/notification

时间:2015-06-15 16:35:28      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:android   应用   搜索   

1.搜索框(SearchView)的功能与用法
    SearchView是搜索组件,其可以让用户在文本框内输入文件,并允许通过监听器监听用户输入。当用户输入完成后提交搜索,可通过监听器执行实际的搜索
    常用方法如下:
    ◆setIconfiedByDefault(boolean iconified):设置该搜索框默认是否自动缩小为图标;
    ◆setSubmitButtonEnabled(boolean enabled):设置是否显示搜索按钮;
    ◆setQueryHint(CharSequence hint):设置搜索框内默认显示的提示文本;
    ◆setOnQueryTextListener(SearchView.OnQueryTextListener listener):为该搜索设置事件监听器;
源码实战:
功能:在界面布局文件中定义一个SearchView和ListView组件,当用户在搜索框中输入数据时将搜索到的数据自动动态的填充到ListView组件中。
(1)src/MainActivity.java
package com.example.searchviewtest;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import android.widget.Toast;
public class MainActivity extends Activity implements OnQueryTextListener{
 private SearchView searchView = null;
 private ListView listView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        searchView = (SearchView)findViewById(R.id.search);
        listView = (ListView)findViewById(R.id.list);
        /**
         * 为ListView添加adapter
         * */
        final String[] data= {"中国","巴基斯坦","中间","米国","中部","只是测试"};
        ArrayAdapter<String>   adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
        listView.setAdapter(adapter);
        listView.setTextFilterEnabled(true);	 //使能文本过滤器
        /**
         * 设置SearchView相关属性
         * */
        searchView.setIconifiedByDefault(false);//设置SearchView默认是否自动缩小为图标
        searchView.setOnQueryTextListener(this);//为该SearchView组件设置事件监听器
        searchView.setSubmitButtonEnabled(true);//设置该SearchView显示搜索按钮
        searchView.setQueryHint("请输入关键字");
    }
   
    /**
     * 动态显示搜索到的结果
     * */
 @Override
 public boolean onQueryTextChange(String newText) {
  if(TextUtils.isEmpty(newText)){	//若搜索框无输入则清除ListView的过滤
   listView.clearTextFilter();
  }else{
   listView.setFilterText(newText);//使搜索框字符与列表数据进行匹配显示
  }
  return true;
 }
 
 /**
  * 单击搜索按钮时激发该方法
  * */
 @Override
 public boolean onQueryTextSubmit(String query) {
  Toast.makeText(this, "您的选择是:"+query, Toast.LENGTH_SHORT).show();
  return false;
 }
}

(2)res/layout/main.xml    
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<SearchView 
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
<ListView 
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>
</LinearLayout>
(3)效果演示            
技术分享技术分享

2.滚动视图(ScrollView)使用方法
    滚动视图ScrollView由FrameLayout派生出来,主要用于为普通组件添加滚动条的组件。ScollView里最多只能包含一个组件且为该组件添加的是垂直滚动条。如果应用需要添加水平滚动条,则需要通过HorizontalScrollView组件实现。
源码实战:
功能:TextView组件中文本的滚动显示。
(1)src/MainActivity.java
package com.example.srcollviewtest;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity; 
import android.content.res.AssetManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity { 
 private TextView mText = null;
 private String parseResult = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mText = (TextView)findViewById(R.id.text);
        AssetManager assetManager = getAssets();	//获取"资产"管理对象
        try {
   InputStream inputStream = assetManager.open("info.txt");	 //获取指定文件输入流
   int length = inputStream.available();	 //获取输入流总字节数
   byte[] buffer = new byte[length];	 //字节数组缓存
   inputStream.read(buffer);	 //将输入流中length个字节读入到字节数组中
   mText.setText(new String(buffer, "GB2312"));  
        } catch (IOException e) {
   e.printStackTrace();
  }
    }
}
(2)res/main.xml
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="match_parent">
        <HorizontalScrollView 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    </HorizontalScrollView>
</ScrollView>
(3)效果演示
技术分享
技术分享

3.Notification的功能与用法
    Notification是显示在手机状态栏的通知,位于手机屏幕的最上方,一般用于显示手机当前的网络状态、电池状态、时间等。Notification所代表的是一种具有全局效果的通知,一般通过NotificationManager服务来发送Notification。NotificationManager是一个重要的系统服务,位于应用程序框架层,应用程序可通过NotificationManager向系统发送全局通知。
    通过Notification.Builder类创建Notification对象,使用步骤如下:
    ◆调用getSystemService(NOTIFICATION_SERVICE)方法获取系统的NotificationManager服务;
    ◆通过Notification.Builder类创建一个Notification对象;
    ◆调用Notification方法设置各种属性
        (1)setDefaults():设置通知LED灯、音乐、振动等
        (2)setAutoCancel():设置点击通知后,状态栏自动删除通知
        (3)setContentTitle():设置通知标题
        (4)setContentText():设置通知内容
        (5)setSmallcon():为通知设置图标
        (6)setLargeIcon():为通知设置大图标
        (7)setTick():设置通知在状态栏的提示文本
        (8)setContentIntent():设置点击通知后将要启动的程序组件对应的PendingIntent.
    ◆通过NotificationManager发送Notification。        
源码实战:
功能:实现发送一个Notification通知,并伴随LED灯闪烁,当点击该Notification通过后跳转至信息显示Activity。
(1)src/MainActivity.java
package com.example.notificationtest;

import android.app.Activity;
import android.app.Notification;
import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;


public class MainActivity extends Activity {
 private NotificationManager notificationManager;
 private  final static int NOTIFICATION_ID=0x123;	 //通知唯一标识符ID
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //获取系统的NotificationManager服务
        notificationManager =  (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    }
   
    /**
     *发送Notification通知
     */
    public void sendNotification(View v){
     Intent intent = new Intent();
     intent.setClassName("com.tencent.mobileqq","com.tencent.mobileqq.activity.SplashActivity");	//启动QQ客户端
     PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
     /**
      * 创建通知并指定相关属性
      * */
     Notification notify = new Notification.Builder(this)
         .setAutoCancel(true)	 //设置打开该通知,该通知自动消失
         .setTicker("有新消息") //设置显示在状态栏的通知提示信息
         .setSmallIcon(R.drawable.ic_launcher) //设置通知的图标
         .setContentText("恭喜发财!")	//设置通知内容的标题
         .setContentText("您有新的QQ红包,猛戳领取?")	//设置通知内容
         .setDefaults(Notification.DEFAULT_LIGHTS|Notification.DEFAULT_VIBRATE)//LED灯、振动设置为默认
         .setSound(Uri.parse("android.resource://com.example.notificationtest/"+R.raw.ring))//设置自定义声音
         .setWhen(System.currentTimeMillis())
         .setContentIntent(pendingIntent)  	//设置点击通知事件(启动微信)
         .build();	 //创建通知
         
      /**
       * 发送通知
       * */
     notificationManager.notify(NOTIFICATION_ID, notify);  
    }
   
    /**
     * 删除NOTIFICATION_ID标志的通知
     */
    public void cancelNotification(View v){
     notificationManager.cancel(NOTIFICATION_ID);
    }
}
注: 除了通过setDefaults()方法为Notification设置声音、振动、闪光灯提示,我们还可以使用setSound(URI)、setVibrate(Long[] long)方法设置自定义声音等效果。
例如:
setSound(Uri.parse("file:///sdcard/click.mp3"))--设置自定义声音
setViberate(new long[]{0,50,100,150})--设置自定义振动
(2)AndroidMainfest.xml添加权限
<span style="font-family:Times New Roman;font-size:18px;"> <!-- 添加LED、振动权限 -->
 <uses-permission  android:name="android.permission.FLASHLIGHT"/>
 <uses-permission  android:name="android.permission.VIBRATE"/></span>
(3)效果演示
技术分享
技术分享

Android搜索框/滚动视图/notification

标签:android   应用   搜索   

原文地址:http://blog.csdn.net/u012637501/article/details/46503609

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!