在Intent中明确表明跳转界面的为显式跳转,还有另一种跳转为隐式跳转,即为不明确表明跳转界面。
首先,在Activity中建立几个Button,分别实现拨打电话,发送短信,打开网页,播放音乐,视频,打开图片,安装APK,添加通知栏。在实现上述功能后,点击Activity中的图片,弹出PopWindow,PopWindow中有相册,相机,退出按钮,点击相册更经过裁剪后换图片,点击相机经过裁剪后更换,点击退出返回Activity界面
1、在清单文件中添加用户权限,
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />在Activity中使用的是布局监听,
public class IntentActivity extends AppCompatActivity implements View.OnClickListener{ private View view; private RoundImageView riv; //圆形图片 private PopupWindow pw; //全局PopWindow
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intent);
pw = new PopupWindow(view);
Button bt1= (Button) findViewById(R.id.bt1); //找到Button
Button bt2= (Button) findViewById(R.id.bt2);
Button bt3= (Button) findViewById(R.id.bt3);
Button bt4= (Button) findViewById(R.id.bt4);
Button bt5= (Button) findViewById(R.id.bt5);
Button bt6= (Button) findViewById(R.id.bt6);
Button bt7= (Button) findViewById(R.id.bt7);
Button bt8= (Button) findViewById(R.id.bt8);
riv= (RoundImageView) findViewById(R.id.riv);
view=getLayoutInflater().inflate(R.layout.pop_layout, null); //得到PopWindow布局
Button img= (Button) view.findViewById(R.id.img);
Button cream= (Button) view.findViewById(R.id.cream);
Button exit= (Button) view.findViewById(R.id.exit);
bt1.setOnClickListener(this); //设置监听事件
bt2.setOnClickListener(this);
bt3.setOnClickListener(this);
bt4.setOnClickListener(this);
bt5.setOnClickListener(this);
bt6.setOnClickListener(this);
bt7.setOnClickListener(this);
bt8.setOnClickListener(this);
img.setOnClickListener(this);
cream.setOnClickListener(this);
exit.setOnClickListener(this);
riv.setOnClickListener(this);
}
}
布局代码如下
xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" //布局中被注释掉的部分为测试PopWindow使用
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.intent.IntentActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt1"
android:text="拨打电话"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt2"
android:text="短信"
android:layout_below="@+id/bt1"
android:layout_alignParentStart="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt3"
android:text="网页"
android:layout_below="@+id/bt2"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt4"
android:text="播放音乐"
android:layout_below="@+id/bt3"
android:layout_alignParentStart="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt5"
android:text="视频"
android:layout_below="@+id/bt4"
android:layout_alignParentEnd="true" />
<com.example.administrator.intent.RoundImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/riv"
android:src="@mipmap/image3"
android:layout_below="@+id/bt5"
android:layout_alignParentStart="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_alignTop="@+id/riv"
android:layout_toEndOf="@+id/riv"
android:layout_marginStart="40dp" />
RelativeLayout>
@Override public void onClick(View v) { int id= v.getId(); switch(id){ case R.id.bt1: Uri uri=Uri.parse("tel:10086"); Intent intent =new Intent(Intent.ACTION_DIAL,uri); startActivity(intent); break; case R.id.bt2: Intent it2=new Intent(Intent.ACTION_VIEW); it2.putExtra("sms_body","你好"); it2.setType("vnd.android-dir/mms-sms"); startActivity(it2); break; case R.id.bt3: Uri uri1=Uri.parse("http://www.baidu.com"); Intent it3=new Intent(Intent.ACTION_VIEW,uri1); startActivity(it3); break; case R.id.bt4: Intent it4 =new Intent(Intent.ACTION_VIEW); File file =new File(""); it4.setDataAndType(Uri.fromFile(file), "audio/*"); startActivity(it4); break; case R.id.bt5: Intent it5 =new Intent(Intent.ACTION_VIEW); File file1=new File(""); it5.setDataAndType(Uri.fromFile(file1),"video/*"); startActivity(it5); break; // case R.id.bt6: // Intent it6 =new Intent(Intent.ACTION_VIEW); // File file2=new File(""); // it6.setDataAndType(Uri.fromFile(file2),"image/*"); // startActivity(it6); // break; // // case R.id.bt7: // Intent it7=new Intent(Intent.ACTION_VIEW); // it7.setDataAndType(Uri.parse("file:///sdcard/qq.apk"), // "application/vnd.android.package-archive"); // startActivity(it7); // break; // case R.id.bt8: // notification(); // break; case R.id.riv: pw.setFocusable(true); //设置点击页面其他位置可退出 pw.setAnimationStyle(R.style.popStyle); //在drawable中建立anim文件夹,存放动画进入,退出效果 backgroundAlpha(0.3f); // ColorDrawable cd = new ColorDrawable(); pw.setBackgroundDrawable(cd); Log.d("===", "111111"); int width=getResources().getDisplayMetrics().widthPixels; pw.setWidth(width); int height = getResources().getDisplayMetrics().heightPixels/4; pw.setHeight(height); pw.showAtLocation(findViewById(R.id.bt1), Gravity.BOTTOM | Gravity.CENTER, 0, 0); pw.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { backgroundAlpha(1.0f); } }); break; case R.id.exit: Log.d("===", "asddd"); pw.dismiss(); break; case R.id.img: photoPhoto(); break; case R.id.cream: tekePhoto(); break; } }