代码十段(一)

目录

  1. 调用另一程序的Activity
  2. 获取手机屏幕分辨率
  3. 监听ScrollView何时滑动到底部
  4. 横竖屏切换
  5. 手机重启
  6. 启动apk默认Activity
  7. TextView行间距
  8. 广播接收者中开启Activity
  9. 启动Activity时不自动弹出软键盘
  10. TextView实现跑马灯的效果

 

 正文

 

1.调用另一程序的activity

 方法一:

// 第一个是包名,第二个是要启动的Activity
ComponentName componetName = new ComponentName("com.yzi","com.yzi.WelcomeActivity"); try { Intent intent = new Intent(); intent.setComponent(componetName); startActivity(intent); } catch (Exception e) { Log.i(TAG, e.toString()); Toast.makeText(this, "未找到可用应用程序!",Toast.LENGTH_LONG).show();

方法二:

Intent intent = new Intent(); 

intent = getPackageManager().getLaunchIntentForPackage( "com.yzi.WelcomeActivity"); 

startActivity(intent);

注意:

要调用的Activity须声明:android:exported="true"。才可以被外部调用

 

2.获取手机屏幕分辨率

方法一:

DisplayMetrics outMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(outMetrics);

int width = outMetrics.widthPixels;

int height = outMetrics.heightPixels;

方法二:

Point point = new Point();

getWindowManager().getDefaultDisplay().getSize(point);

int width = point.x;

int height = point.y;

 

3.监听ScrollView何时滑动到底部

scroll.setOnTouchListener(new OnTouchListener() {

        @Override

        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) {

            case MotionEvent.ACTION_MOVE: {

                 /**(1)getScrollY()————滚动条滑动的距离 (2)getMeasuredHeight()

                   * (3)getHeight()

                   */



                // 顶部状态

                if (scroll.getScrollY() <= 0) {

                    Log.i("Main", "滑动到顶部");

                }



               // 底部状态

               // TextView的总高度<=一屏幕的高度+滚动条的滚动距离

               if (scroll.getChildAt(0).getMeasuredHeight() <= scroll.getHeight() + scroll.getScrollY()) {

            Log.i("Main", "滑动到底部");

                   Log.i("Main","scroll.getChildAt(0).getMeasuredHeight()="

                                        + scroll.getChildAt(0).getMeasuredHeight()

                                        + "scroll,getHeight()="+ scroll.getHeight()

                                        + "scroll.getScrollY()="+ scroll.getScrollY());

                   tv.append(getResources().getString(R.string.content));

         }

               break;

            }

            }

        return false;

        }

    });

 

4.横竖屏切换

在AndroidManifest.xml中

==Android 2.3以前的横竖屏切换==

在Android 2.3平台上,我们可以需要设置界面的横竖屏显示时,可以在AndroidManifest.xml中,对Activity的属性添加以下代码:

android:configChanges="keyboardHidden|orientation"

// 同时在Activity中覆写onConfigurationChanged方法

==Android 4.0以后的横竖屏切换==

当我们在4.0上像之前那样设置横竖屏时,会发现竟然没有效果,Activity依然走自己的生命周期,这是因为在API level 13以后Android做了修改了,当设备横竖屏切换时屏幕尺寸也改变了。因此,如果你想在API Level 13或者更高的环境下,像以前那样阻止设备的横竖屏切换,你需要在 orientation 后加上 screenSize 。也就说你要像这样声明:

android:configChanges="keyboardHidden|orientation|screenSize"

同时依然要在 Activity 中覆写 onConfigurationChanged 方法

@Override

public void onConfigurationChanged(Configuration newConfig) {

    super.onConfigurationChanged(newConfig);

    Log.i("TAG","I'm Android 4.0");

}
代码动态切换
// 方法一
if
(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ /* 若当前为横式,则变更为直式显示 */ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }else if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){ /* 若当前为直式,则变更为横式显示 */ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }

 

// 方法二:判断屏幕宽高比
DisplayMetrics outMetrics = new DisplayMetrics(); getWindow().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);; int h = outMetrics.heightPixels; int w = outMetrics.widthPixels; // 否分辨率为按钮按下当下的分辨率 if (w > h){   // Landscape   // 重写Activity里的setRequestedOrientation()方法 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }else{ // Portrait setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }

 

5.手机重启 

通过不断的new出来空白的Toast把系统弄崩溃,这样系统就会重启...

public void click(View view) {

    while (true) {

        Toast toast = new Toast(this);

        toast.setView(new View(this));

        toast.show();

    }

}

 

6.启动APK默认Activity

public static void startApkActivity(final Context ctx, String packageName) {

        PackageManager pm = ctx.getPackageManager();

        PackageInfo pi;

        try {

            pi = pm.getPackageInfo(packageName, 0);

            Intent intent = new Intent(Intent.ACTION_MAIN, null);

            intent.addCategory(Intent.CATEGORY_LAUNCHER);

            intent.setPackage(pi.packageName);



            List<ResolveInfo> apps = pm.queryIntentActivities(intent, 0);



            ResolveInfo ri = apps.iterator().next();

            if (ri != null) {

                String className = ri.activityInfo.name;

                intent.setComponent(new ComponentName(packageName, className));

                ctx.startActivity(intent);

            }

        } catch (NameNotFoundException e) {

            Log.e("startActivity", e);

        }

    }

}

 

7.TextView行间距

Android系统中TextView默认显示中文时会比较紧凑,不是很美观。 
为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtraandroid:lineSpacingMultiplier

1.android:lineSpacingExtra 
设置行间距,如”3dp”。

2.android:lineSpacingMultiplier 
设置行间距的倍数,如”1.2″。

 

8.广播接收者中开启Activity

如果在一个不是Activity的上下文中(如服务或者广播接收者)中去开启一个Activity那么就必须设置 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 这样才可以,不然会报错.因为Activity开启后必须要有一个Task栈,而在服务和广播接收者的上下文中并没有Task栈,所以我们必须要去指定一个新的栈。

public class OutCallReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

        String number = getResultData();

        if("20182018".equals(number)){

            Intent loatFindIntent = new Intent(context,LostFindActivity.class);

            loatFindIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//用非Activity的context开启Activity时候必须加上这一句

            context.startActivity(loatFindIntent);

            setResultData(null);//设置外拨的电话号码为空.这样系统就不会启动拨号拨出了

        }

    }

}
View Code

 

9.启动Activity时不自动弹出软键盘

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

 

10.TextView实现跑马灯的效果

<TextView

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:ellipsize="marquee"

    android:focusable="true"

    android:focusableInTouchMode="true"

    android:marqueeRepeatLimit="marquee_forever"

    android:singleLine="true"

    android:text="测试啊啊啊啊啊啊啊啊ggggggggggggggggggggggggggggg" />

 

你可能感兴趣的:(代码)