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点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

时间: 2024-11-03 20:53:41

Android学习笔记(三)基础知识(2)的相关文章

Java泛型的学习笔记[1]—基础知识

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.本文主要描述的是泛型类. Java语言引入泛型的好处:1)最大程度的保证了类型安全:2)简化编译 我们以ArrayList类为例: 1)如果没有泛型,我们要不然需要为每一种类型X编写一个XArrayList类:要不然在ArrayList中用Object的对象来存储数据,然后每次取出对象时使用类型转换:       

JavaScript中的Number数字类型学习笔记_基础知识

使用IEEE754格式来表示整数和浮点数值.浮点数值:该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字.浮点数值需要内存空间是保存整数值的两倍.最高精度是17为小数,但在进行算术运算时其精度远远不如整数. 各种数值类型:十进制,八进制(在严格模式下无效),十六进制 八进制字面量的第一位必须是0,然后是八进制数字序列(0~7).如果字面值中的数值超出了范围,那么前导0将被忽略,后面的数值将被当做十进制数来解析 070//56 079//79 十六进制字面值的前两位必须是0x,后跟十六进

[转]JS宝典学习笔记_基础知识

1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大

JavaScript基础知识学习笔记_基础知识

JavaScript简介 一.定义:JavaScript是脚本语言,需要宿主文件,它的宿主文件是html文件. JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行. 二.用法: 在html中的位置有三块: 1)head里面: 2)body里面: 3)</html>之后,为了保险起见一般写在</html>之后.<script language=&quo

Javascript Object 对象学习笔记_基础知识

构造函数new Object() new Object(value) 参数value     可选的参数,声明了要转换成Number对象.Boolean对象或String对象的原始值(即数字.布尔值或字符串).JavaScript 1.1之前的版本和ECMAScript Vl不支持该对象. 返回值 如果没有给构造函数传递value参数,那么它将返回一个 新创建的Object实例.如果指定了原始的value参数,构造函数将创建并返回原始值的包装对象,即Number对象.Boolean对象或 Str

Ruffy javascript 学习笔记_基础知识

1,javascript的原型模型:prototype 在实现面向对象,(像是定义一个类的时候)需要一个构造函数来定义对象的成员,而方法去依附在该构造函数的原型上. 2,javascript中,为了实现继承,必须将子类构造函数的prototype设置为一个父类的对象实例. 3,css的方块套方块模型: 最外是margin 是用来设置一个元素所占的空间的边缘到相邻元素的距离 边框:border 用来设定一个元素的连线 padding 用来设置元素内容互元素边框的距离 还有背景属性是content

Android学习笔记45之gson解析json_Android

JSON即JavaScript Object Natation, 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔. 如:{"name":"coolxing

Android学习笔记之应用单元测试实例分析_Android

本文实例讲述了Android学习笔记之应用单元测试.分享给大家供大家参考,具体如下: 第一步:在AndroidManifest.xml中加入如下两段代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pccw" android:versionCode="1" android:versionName="1.0&qu

Android学习笔记(二)App工程文件分析_Android

App工程文件分析 关于如何创建一个最简单的Android App请参照链接: < Android学习笔记(一)环境安装及第一个hello world > http://www.jb51.net/article/52593.htm 创建完的工程文件如下图所示,本文对一些主要的文件进行分析. src文件分析 App源文件如图: 打开源文件 MainActivity.java 可看到如下代码: 源码主要功能如下: App源文件目录 package com.example.firstapp; 导入A

Bootstrap3学习笔记(三)之表格_javascript技巧

在上篇文章给大家介绍了 BootStrap3学习笔记(一)之网格系统       Bootstrap3学习笔记(二)之排版 只需要在table标签上使用.table类,就可以使用bootstrap默认的表格样式 如果需要行背景有交替变化,可以这样设定: 复制代码 代码如下: <table class="table table-striped"> 如果需要边框,可以这样设定: 复制代码 代码如下: <table class="table table-borde