android知识点

来源:互联网 发布:windows live登陆 编辑:程序博客网 时间:2024/05/17 23:20
 

开发andorid程序必备

Eclipse 3.5以上版本

SDK类似于java中的jdk。

Adt 是开发Eclipe上的一个插件。

 

 

组件使用:

TestView:

为文本设置超链接,需设置该属性andorid:autoLink=”all”, 具体如下:

<TextView

    android:id="@+id/myTxtView01"

    android:autoLink="all"

    android:text="百度: http://www.baidu.com"/>

 

 

组件跳转:

       运用改变Activity Layout这个技巧,就可以做出手机界面转换的效果(setContentView())。但这里有一个疑点不大很明白,就是当我定义了两个layout中定义了分别定义了一个用于跳转的Button,当我从一个界面跳转到另一个界面之后,然后再从这个界面跳转到之前界面,再从之前界面跳转的时候,此时按钮是否就需重新注册,这是为是么???

 

 

调用另一个Activity:

       通过Intent来实现两个Activity间的相互跳转。具体代码如下:

Intent intent = new Intent();

intent.setClass(TwoActivityChangeActivity.this, SecondActivity.class);

startActivity(intent);

TwoActivityChangeActivity.this.finish();

其中还需要在AndroidMainfest.xml中添加要跳转到的Activity,   android.intent.category.LAUNCHER是用来设置先运行的Activity。

 

 

采用Bundle对象来实现不同Activity之间的数据传递

    首先是先new 一个Bundle对象,然后将要传递的类型直接put进去即可。示例代码:

    Bundle bundle = new Bundle();

    bundle.putDouble(2);

    bundle.putString(“yaner”);

    intent.putExtras(bundle);

取得数据的时候采用getIntent().getExtras()来获取Bundle。

 

Handler传递数据

    实例化一个handler对象:

Handler handler = new Handler(){

       public void handleMessage(Message msg){

           super.handleMessage(msg);

           Bundle bundle = msg.getData();

           String number = bundle.getString("number");

           switch(msg.what){

           case UPDATE_TIME:

              mTextView.setText("正在更新时间:" + number);

              break;

           case UPDATE_COMPLETED:

              mTextView.setText("更新时间完毕");

              break;

           }

       }

      

  };

    然后封装数据并发送:

         Bundle bandle = new Bundle();

  bandle.putString("number", mShowNumber);

    Message msg = new Message();

  msg.what = UPDATE_TIME;

  Msg.setData = “yaner”;

  handler.sendMessage(msg);

 

Notification 发送消息

notification(通知) 使用:

    使用通知的一个好处就是在当程序运行的时候,通过调用调用

notification给用户发送一条消息, 这样不会中断用户当前的操作,

不想AlertDialog显示那样,会截获屏幕焦点,

比如,当玩家正在玩游戏的时候,使用notification不会干扰到玩家游戏,

玩家尽可以等玩完游戏之后再去看notification(通知),而如果使用AlertDialog

的话, 则此时玩家将必须关闭AliertDialog之后才能继续玩游戏。

   

 

    首先得到消息的管理对象

     NotificationManager mManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

  Notification notification = new Notification(R.drawable.icon, "奋斗赚大钱", System.currentTimeMillis());

notification.flags = Notification.FLAG_AUTO_CANCEL;

      

       Intent intent = new Intent(this, MessageAndHandlerAppActivity.class);

       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

      

       Bundle bundle = new Bundle();

       bundle.putString("name", "从Notification跳转过来的");

       intent.putExtras(bundle);

      

       PendingIntent contentIntent = PendingIntent.getActivity(this,

              R.string.app_name, intent, PendingIntent.FLAG_UPDATE_CURRENT);

      

     notification.setLatestEventInfo(this, "努力啊", "想法子挣钱", contentIntent);

然后调用mManager.notify(0, notification);即可.

 

 

返回数据到前一个Activity 采用startActivityForResult()方法

示例:

第一个activity:

/**实例化一个Intent*/

              Intent intent = new Intent();

              intent.setClass(TwoActivityChangeActivity.this, SecondActivity.class);

            //注意这里在跳转的时候没有销毁intent,我估计销毁的话采用这种方式,就传不过来值了。需作测试。。。。

              /**实例化一个用于传输数据的Bundle*/

              Bundle bundle = new Bundle();

              bundle.putDouble("height", height);             

              intent.putExtras(bundle);

            startActivityForResult(intent, 0);

 

第二个activity:

SecondActivity.this.setResult(RESULT_OK, intent);    //intent是第一个activity传过来的Intent.

SecondActivity.this.finish();

 

 

保存数据的几种方式:

1. ShredPreferences临时存取数据

sharedPreferences是以XML的格式以文件的方式自动保存的。

 

2. 保存到目录文件下。 如:

String filename = “tempfile.tmp”;

FileOutputStream fos = openFileOutput(file_name, Context.MOME_PRIVATE);

3.  采用SQLITE存储

 

在程序中取得layout,然后在添加相应的视图

setContentView(R.layout.image);

ImageView imgView = new ImageView(this);

LinearLayout ll = (LinearLayout) findViewById(R.id.imageId);

ll.addView(new FrameView(this));

 

在Activity中获得屏幕宽、高

Display display = getWindwManager().getDefaultDisplay();

display.getWidth();  display.getHeight();

 

全屏幕窗口设置

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

 

 

强制横屏的方法

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANGSCAPE);     

 

强制竖屏的方法

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

 

保存数据的几种方法:

1. 用sharedPreferences保存到xml文件中

2. 保存到自定义的file文件中

3. 保存到SD卡中

4. 从程序目录下读取数据(这种方式只能读不能写)

 

Dialog弹出框

Theme主题修改

Toatst对象的使用

Toast mtoast = new Toast(this);

ImageView  mview = new ImageView(this);

mview.setImageResource(R.drawable.icon);

mtoast.setView(mview);

mtoast.show();

 

 

ImageView图片呈现

Animation动画特效…找个示例看看,主要是xml

 


另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。 

传入的Name

返回的对象

说明

WINDOW_SERVICE

WindowManager

管理打开的窗口程序

LAYOUT_INFLATER_SERVICE

LayoutInflater

取得xml里定义的view

ACTIVITY_SERVICE

ActivityManager

管理应用程序的系统状态

POWER_SERVICE

PowerManger

电源的服务

ALARM_SERVICE

AlarmManager

闹钟的服务

NOTIFICATION_SERVICE

NotificationManager

状态栏的服务

KEYGUARD_SERVICE

KeyguardManager

键盘锁的服务

LOCATION_SERVICE

LocationManager

位置的服务,如GPS

SEARCH_SERVICE

SearchManager

搜索的服务

VEBRATOR_SERVICE

Vebrator

手机震动的服务

CONNECTIVITY_SERVICE

Connectivity

网络连接的服务

WIFI_SERVICE

WifiManager

Wi-Fi服务

TELEPHONY_SERVICE

TeleponyManager

电话服务

 

 

查看android sdk版本

在sdk中,找到tools里面的android,执行它,然后点击about就能够看到该版本信息

 

查看签名的文件
keytool -list -keystore "android.keystore" 输入你设置的keystore密码即可

df 查看外接挂载设备

查看是否已经正确签名:
jarsigner -verify -verbose -certs E:\工作\打包工具\test\signedAPK\abc.apk



绘制圆角矩形:

这里采用的方式是对画布(canvas)进行切割来实现。之所以记录在此的目的是,除了使用谷歌提供的ap外,还得关闭硬件加速android:hardwareAccelerated="false"。不然方法无效,切记。  事例代码如下:

Path mPath = new Path();RectF rect1 =  null;  @Overrideprotected void dispatchDraw(Canvas canvas) {    rect1 = new RectF(getScrollX(), getScrollY(),getRight(), getBottom());mPath.addRoundRect(rect1, 160, 160, Direction.CW);        canvas.clipPath(mPath);         canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG|Paint.ANTI_ALIAS_FLAG));        canvas.save();                 super.dispatchDraw(canvas);}


在代码中引入字体

布局:

    <com.qwerjk.better_text.MagicTextView        qwerjk:typeface="ArialRoundedBold"        android:textSize="78sp"        android:textColor="#ffffff"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />

    然后在代码中引入如下:
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), String.format("fonts/%s.ttf", typefaceName));setTypeface(tf);


windows下使用ndk生成so库


说明: C:\Users\Administrator\Downloads\FFMpeg-debug\jni>是项目工程的jni目录, D:\softwareAndroid\android-ndk
-r10e\ndk-build
是ndk的路径.

 

原创粉丝点击