代码十段(一)

目录

  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" />

 

转载于:https://www.cnblogs.com/huangzx/p/4424819.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值