欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

安卓基础之悬浮按钮和状态栏通知

程序员文章站 2022-05-08 21:09:26
...
1.打开网页
Uri uri = Uri.parse("http://www.php.cn");  
Intent it = new Intent(Intent.ACTION_VIEW, uri);  
startActivity(it);

2.获取网页内容

 public String posturl(String url){
     InputStream is = null;
     String result = "";
     try{
         HttpClient httpclient = new DefaultHttpClient();
         HttpPost httppost = new HttpPost(url);
         HttpResponse response = httpclient.execute(httppost);
         HttpEntity entity = response.getEntity();
         is = entity.getContent();
     }catch(Exception e){
         return "Fail to establish http connection!"+e.toString();
     }
     try{
         BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));
         StringBuilder sb = new StringBuilder();
         String line = null;
         while ((line = reader.readLine()) != null) {
             sb.append(line + "\n");
         }
         is.close();
         result=sb.toString();
     }catch(Exception e){
         return "Fail to convert net stream!";
     }
     return result;
 }

3.添加超链接

textView1.setText(Html.fromHtml("<a href='http://www.php.cn'> </a>"));
textView1.setMovementMethod(LinkMovementMethod.getInstance());

4。允许访问网络

<uses-permission android:name="android.permission.INTERNET" />

5。简单的消息框

new AlertDialog.Builder(this)
   .setTitle("标题") 
   .setMessage("简单消息框")
    .setPositiveButton("确定", null) 
    .show();

6。确定与取消对话框

new AlertDialog.Builder(this)  
    .setTitle("确认") 
    .setMessage("确定吗?") 
    .setPositiveButton("是", null) 
    .setNegativeButton("否", null) 
    .show();

7。带输入框的对话框

new AlertDialog.Builder(this) 
    .setTitle("请输入") 
    .setIcon(android.R.drawable.ic_dialog_info) 
    .setView(new EditText(this)) 
    .setPositiveButton("确定", null) 
    .setNegativeButton("取消", null) 
    .show();

8。带单选框的对话框

 new AlertDialog.Builder(this) 
    .setTitle("请选择") 
    .setIcon(android.R.drawable.ic_dialog_info)                 
    .setSingleChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, 0,  
      new DialogInterface.OnClickListener() { 
                                   
         public void onClick(DialogInterface dialog, int which) { 
            dialog.dismiss(); 
         } 
      } 
    ) 
    .setNegativeButton("取消", null) 
    .show();


9。带多选框的对话框

new AlertDialog.Builder(this) 
  .setTitle("多选框") 
  .setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, null, null) 
  .setPositiveButton("确定", null)                 
  .setNegativeButton("取消", null) 
  .show();

10。带列表框的对话框

new AlertDialog.Builder(this) 
     .setTitle("列表框") 
  .setItems(new String[] {"列表项1","列表项2","列表项3"}, null) 
  .setNegativeButton("确定", null) 
  .show();

11。图片框

ImageView img = new ImageView(this); 
  img.setImageResource(R.drawable.ic_launcher); 
  new AlertDialog.Builder(this) 
  .setTitle("图片框") 
  .setView(img) 
  .setPositiveButton("确定", null) 
  .show();


12。弹出短暂提示框

public void alert(String txt){
   Toast.makeText(MainActivity.this,txt, 1).show();
  }


13。网址转码

 public String urlencode(String str) throws UnsupportedEncodingException{
   return java.net.URLEncoder.encode(str, "utf-8");  
  }

14。网址解码

 public String urldecode(String str) throws UnsupportedEncodingException{
   return java.net.URLDecoder.decode(str, "utf-8");  
  }


15。获取网页源码

//得到二进制数据   
    public String getDatas(String path) throws Exception{  
        // 类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。   
        URL url = new URL(path);  
         // 每个 HttpURLConnection 实例都可用于生成单个请求,   
         //但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络   
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
         //设置 URL 请求的方法   
         conn.setRequestMethod("GET");  
         //设置一个指定的超时值(以毫秒为单位),   
        //该值将在打开到此 URLConnection 引用的资源的通信链接时使用。   
        conn.setConnectTimeout(5 * 1000);  
        // conn.getInputStream()返回从此打开的连接读取的输入流   
        InputStream inStream = conn.getInputStream();// 通过输入流获取html数据   
         byte[] data = readInputStream(inStream);// 得到html的二进制数据   
       String html = new String(data);  
        return html;  
           
     }  
    //读取输入流中的数据,返回字节数组byte[]   
     public byte[] readInputStream(InputStream inStream) throws Exception{  
        //此类实现了一个输出流,其中的数据被写入一个 byte 数组   
         ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
         // 字节数组   
         byte[] buffer = new byte[1024];  
        int len = 0;  
        //从输入流中读取一定数量的字节,并将其存储在缓冲区数组buffer 中   
         while ((len = inStream.read(buffer)) != -1) {  
            // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流  
             outStream.write(buffer, 0, len);  
         }  
         inStream.close();  
        //toByteArray()创建一个新分配的 byte 数组。   
         return outStream.toByteArray();  
     }

16。显示网络图片

public Bitmap returnBitMap(String url) {   
         URL myFileUrl = null;   
         Bitmap bitmap = null;   
         try {   
          myFileUrl = new URL(url);   
         } catch (MalformedURLException e) {   
          e.printStackTrace();   
         }   
         try {   
          HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();   
          conn.setDoInput(true);   
          conn.connect();   
          InputStream is = conn.getInputStream();   
          bitmap = BitmapFactory.decodeStream(is);   
          is.close();   
         } catch (IOException e) {   
          e.printStackTrace();   
         }   
         return bitmap;   
      }  
 ImageView imView = (ImageView) findViewById(R.id.pic1);   
 imView.setImageBitmap(returnBitMap("https://img.php.cn/upload/course/000/001/120/595af5fa9f34f845.png"));


17。按钮点击事件

//登录检测
   Button button=(Button)findViewById(R.id.button1);
         button.setOnClickListener(new OnClickListener(){   
    public void onClick(View v){
        }
    });
  //登录检测

18。对话框监听事件

new AlertDialog.Builder(this) 
  .setTitle("亲,是否退出?") 
  .setPositiveButton("确定", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface arg0, int arg1) {
    // TODO Auto-generated method stub
    alert("你点了确定");
   }}) 
        .setNegativeButton("取消",new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    alert("你已经取消了");
   }})
  .show(); 
  public void alert(String txt){
   Toast.makeText(this,txt, 1).show();
  }

19。安卓退出程序

private void showTips() {
 
    AlertDialog alertDialog = new AlertDialog.Builder(this)
           .setTitle("退出程序").setMessage("是否退出程序")
               .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  
                   public void onClick(DialogInterface dialog, int which) {
                       finish();
                   }
  
               }).setNegativeButton("取消",
 
               new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int which) {
                         return;
                     }
               }).create(); // 创建对话框
         alertDialog.show(); // 显示对话框
      }
   public boolean onKeyDown(int keyCode, KeyEvent event) {
  
       if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            showTips();
            return false;
         }
  
        return super.onKeyDown(keyCode, event);
     }

20。安卓WebView组件

 WebView mWebView = new WebView(this);
  
  mWebView.setWebViewClient(new webViewClient());//调用自身打开
 
  mWebView.getSettings().setJavaScriptEnabled(true); 
  mWebView.loadUrl("http://www.php.cn/member/1.html"); 
 setContentView(mWebView);  
class webViewClient extends WebViewClient{ 
           //重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。 
        @Override 
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
            view.loadUrl(url); 
            //如果不需要其他对点击链接事件的处理返回true,否则返回false 
            return true; 
        } 
            
       }


21。无参数Activity跳转

Intent it = new Intent(Activity.Main.this, Activity2.class);
startActivity(it);

22。向下一个Activity传递数据(使用Bundle和Intent.putExtras)

Intent it = new Intent(Activity.Main.this, Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("name", "This is from MainActivity!");
it.putExtras(bundle);       // it.putExtra(“test”, "shuju”);
startActivity(it);            // startActivityForResult(it,REQUEST_CODE);

对于数据的获取可以采用:

Bundle bundle=getIntent().getExtras();
String name=bundle.getString("name");

23。向上一个Activity返回结果(使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity)

Intent intent=getIntent();
Bundle bundle2=new Bundle();
bundle2.putString("name", "This is from ShowMsg!");
intent.putExtras(bundle2);
setResult(RESULT_OK, intent);

24。回调上一个Activity的结果处理函数(onActivityResult)

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==REQUEST_CODE){
            if(resultCode==RESULT_CANCELED)
                  setTitle("cancle");
            else if (resultCode==RESULT_OK) {
                 String temp=null;
                 Bundle bundle=data.getExtras();
                 if(bundle!=null)   temp=bundle.getString("name");
                 setTitle(temp);
            }
        }
    }

25。安卓定时器

 Timer timer = new Timer(); 
   timer.schedule(task,10000,2000);   
      
TimerTask task = new TimerTask(){   
           public void run() {  
            Message message = new Message();  
            message.what = 1;  
            handler.sendMessage(message);   
            }   
           };  
Handler handler = new Handler(){ 
          public void handleMessage(Message msg) {    
           switch (msg.what) {    
           case 1:     
            alert("hear me?");    
            break;    
            }   
           super.handleMessage(msg);   
           }   
          };

26。安卓插入背景音乐

MediaPlayer mediaPlayer = new MediaPlayer();
          Uri uri = Uri
               .parse("http://www.php.cn/asset/1.mp3");  
  try {
   mediaPlayer.setDataSource(Sound.this, uri);
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalStateException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
 
try {
   mediaPlayer.prepare();
  } catch (IllegalStateException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
 mediaPlayer.start();

27。int与string互转


1 如何将字串 String 转换成整数 int?

A. 有两个方法:

1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);

2). int i = Integer.valueOf(my_str).intValue();

注: 字串转成 Double, Float, Long 的方法大同小异.

2 如何将整数 int 转换成字串 String ?

A. 有叁种方法:

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = "" + i;

注: Double, Float, Long 转成字串的方法大同小异.

28。获取屏幕宽高

DisplayMetrics dm = getResources().getDisplayMetrics(); 
int screenWidth = dm.widthPixels; 
int screenHeight = dm.heightPixels - 50;

29。图片拖动

private int screenWidth; 
private int screenHeight; 
private ImageView img1; 
private ImageView img2;
img1 = (ImageView) findViewById(R.id.imageView1); 
img2 = (ImageView) findViewById(R.id.imageView2);
DisplayMetrics dm = getResources().getDisplayMetrics(); 
screenWidth = dm.widthPixels; 
screenHeight = dm.heightPixels - 50;
img1.setOnTouchListener(movingEventListener); 
img2.setOnTouchListener(movingEventListener);
private OnTouchListener movingEventListener = new OnTouchListener() { 
int lastX, lastY; 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
        lastX = (int) event.getRawX(); 
        lastY = (int) event.getRawY(); 
        break; 
    case MotionEvent.ACTION_MOVE: 
        int dx = (int) event.getRawX() - lastX; 
        int dy = (int) event.getRawY() - lastY;
        int left = v.getLeft() + dx; 
        int top = v.getTop() + dy; 
        int right = v.getRight() + dx; 
        int bottom = v.getBottom() + dy; 
        // 设置不能出界 
        if (left < 0) { 
            left = 0; 
            right = left + v.getWidth(); 
        }
        if (right > screenWidth) { 
            right = screenWidth; 
            left = right - v.getWidth(); 
        }
        if (top < 0) { 
            top = 0; 
            bottom = top + v.getHeight(); 
        }
        if (bottom > screenHeight) { 
            bottom = screenHeight; 
            top = bottom - v.getHeight(); 
        }
        v.layout(left, top, right, bottom);
        lastX = (int) event.getRawX(); 
        lastY = (int) event.getRawY();
        break; 
    case MotionEvent.ACTION_UP: 
        break; 
    } 
    return true; 
} 
};


30。状态栏通知消息提示代码

 private void addNotificaction(int id) {
   NotificationManager manager = (NotificationManager) this
   .getSystemService(Context.NOTIFICATION_SERVICE);
   // 创建一个Notification
   Notification notification = new Notification();
   // 设置显示在手机最上边的状态栏的图标
   notification.icon = R.drawable.ic_launcher;
   // 当当前的notification被放到状态栏上的时候,提示内容
   notification.tickerText = "注意了,我被扔到状态栏了";
   
 
   // 添加声音提示
   notification.defaults=Notification.DEFAULT_SOUND;
   // audioStreamType的值必须AudioManager中的值,代表着响铃的模式
   notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;
   
   //下边的两个方式可以添加音乐
   //notification.sound = Uri.parse("http://www.php.cn/asset/1.mp3"); 
   //notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6"); 
   Intent intent = new Intent(this, functions.class);
   PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
   // 点击状态栏的图标出现的提示信息设置
   notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);
   manager.notify(id, notification);
   
  }

31。安卓弹出层【弹窗】代码

private void showPopUp(View v) {
   LinearLayout layout = new LinearLayout(this);
   layout.setBackgroundColor(Color.GRAY);
   TextView tv = new TextView(this);
   tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
   tv.setText("I'm a pop -----------------------------!");
   tv.setTextColor(Color.WHITE);
   layout.addView(tv);
   PopupWindow popupWindow = new PopupWindow(layout,120,120);
   
   popupWindow.setFocusable(true);
   popupWindow.setOutsideTouchable(true);
   popupWindow.setBackgroundDrawable(new BitmapDrawable());
   
   int[] location = new int[2];
   v.getLocationOnScreen(location);
   
   popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]-popupWindow.getHeight());
  }  
  showPopUp(LayoutInflater.from(getBaseContext()).inflate(R.layout.popview, null));

32。 安卓通过新的xml布局文件获取view对象

LayoutInflater.from(getBaseContext()).inflate(R.layout.popview, null);

33。悬浮功能所需要的权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

34。添加悬浮按钮

 权限  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
 
WindowManager wm=(WindowManager)getApplicationContext().getSystemService("window");  
WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();  
wmParams.type=2002;  //type是关键,这里的2002表示系统级窗口,你也可以试试2003。  
wmParams.format=1;  
wmParams.flags=40;  
wmParams.width=40;  
wmParams.height=40;  
wm.addView(LayoutInflater.from(getBaseContext()).inflate(R.layout.popview, null), wmParams);//创建View

本文由用户“Ty80”提供,原文地址:http://www.php.cn/java-article-374028.html

请勿转载~~~

学习php就上.

以上就是安卓基础之悬浮按钮和状态栏通知的详细内容,更多请关注其它相关文章!