Android学习笔记(三)基础知识(2)

简介:

交互对话框


 

使用Android SDK中,具有交互功能的对话框是AlertDialog窗口。

复制代码
package com.example.test8;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    private Button bt;
    int n=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        bt=(Button)findViewById(R.id.button1);
        bt.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                n++;
                String str=Integer.toString(n);
                bt.setText("点击次数:"+n);
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("提示")
                .setMessage("对话框")
                .setPositiveButton("确定",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                    }
                } )
                .show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
复制代码

 

拖放相片特效


  在Android中,拖动图片的特效可以通过Android.content.Context,Android,widget.BaseAdapter和Android.widget.imageView等来实现。

  在下面的列子中,context可以像画布一样,随时可以被处理覆盖。Context是作为Android.content子类。通过widget.BaseAdapter作为容器来存放Gallery所需要的图片。 

  这里是通过使用Gallery实现的相片拖拽功能,具体代码如下:

复制代码
package com.example.test9;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {
    
    private TextView textview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textview = (TextView)findViewById(R.id.textView1);
        textview.setText("特效演示");
        textview.setTextColor(Color.BLUE);
        
        Gallery gallery=(Gallery)findViewById(R.id.gallery1);
        gallery.setAdapter(new ImageAdapter(this));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public class ImageAdapter extends BaseAdapter{

        private Context myContext;
        
        private int[] myImageID={android.R.drawable.btn_minus,
                android.R.drawable.btn_radio,
                android.R.drawable.ic_lock_idle_low_battery,
                android.R.drawable.ic_menu_camera
        };
        
        public ImageAdapter(Context c){
            this.myContext=c;
        }
        
        public int getCount() {
            // TODO Auto-generated method stub
            return this.myImageID.length;
        }

        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ImageView i=new ImageView(this.myContext);
            
            i.setImageResource(this.myImageID[position]);
            i.setScaleType(ImageView.ScaleType.FIT_XY);
            
            i.setLayoutParams(new Gallery.LayoutParams(120,120));
            return i;
        }
        
    }
    
}
复制代码

 

设置about关于信息


 创建一个onCreateOptionsMenu(Menu menu)类函数,用于添加Menu菜单项,再利用onOptionItemSelected选择菜单项

复制代码
package com.example.test10;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0,0,0,"关于");
        menu.add(0,1,1,"退出");
        return super.onCreateOptionsMenu(menu);
    }

    public boolean onOptionsItemSelected(MenuItem item){
        super.onOptionsItemSelected(item);
        switch(item.getItemId()){
        case 0:
            openOptionsDialog();
            break;
        case 1:
            finish();
        }
        return true;
    }
    
    private void openOptionsDialog(){
        new AlertDialog.Builder(this)
        .setTitle("关于")
        .setMessage("***")
        .setPositiveButton("OK",new OnClickListener() {
            
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                
            }
        })
        .show();
    }
    
}
复制代码

 

程序加载中状态框


   程序加载中的提示,此功能是通过Progress Dialog类来运行,此类在Android.app.ProgressDialog类里。但是,我们需要注意使用dismiss()函数来关闭取得焦点的对话框,否则程序将陷入死循环,也不能在线程里更改CONTEXT或parent view的任何状态。

复制代码
package com.example.test11;

import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    private TextView text;
    private Button bt;
    public ProgressDialog myDialog=null;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        text=(TextView)findViewById(R.id.textView1);
        bt=(Button)findViewById(R.id.button1);
        
        bt.setOnClickListener(myShowProgressBar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    Button.OnClickListener myShowProgressBar=new Button.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            final CharSequence strDialogTile="请等待";
            final CharSequence strDialogBody="程序正在运行";
            
            myDialog=ProgressDialog.show(MainActivity.this,strDialogTile,strDialogBody,true);
            
            text.setText(strDialogBody);
            
            new Thread(){
                public void run(){
                    try{
                        text.setText("start");
                        sleep(3000);
                        text.setText("end");
                    }catch (Exception e) {
                        // TODO: handle exception
                        e.printStackTrace();
                    }
                    finally{
                        myDialog.dismiss();
                    }
                }
            }.start();
        }
    };
}
复制代码

 本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/archive/2013/05/16/3076677.html,如需转载请自行联系原作者

相关文章
|
搜索推荐 Java Linux
Android基础入门教程
Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
241 0
|
Java Android开发 Kotlin
一些实用的Android进阶小技巧
主要是利用application获取唯一的全局实例context,使得我们在任何场景都可以获取context
100 0
一些实用的Android进阶小技巧
|
Java Linux Android开发
|
存储 消息中间件 缓存
2.2019Android高级面试题总结
说下你所知道的设计模式与使用场景 a.建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景比如最常见的AlertDialog,拿我们开发过程中举例,比如Camera开发过程中,可能需要设置一个初始化的相机配置,设置摄像头方向,闪光灯开闭,成像质量等等,这种场景下就可以使用建造者模式装饰者模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
3970 0
|
XML 存储 数据库
Android基础知识
Android: 五种布局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 全都继承自ViewGroup,各自特点及绘制效率对比。
1177 0
|
XML Java Android开发
|
XML Java Android开发