編輯:關於Android編程
程序實現功能:
播放視頻,右側上下滑動改變亮度,左側上下滑動改變音量。
現在我們來記住幾句重要的屬性
清單文件,強制橫屏
android:screenOrientation=”landscape”
不會重新執行Oncreat
android:configChanges=”orientation|keyboard”
android:configChanges=”orientation|keyboard|screenSize
它會走onConfigurationChanged
VideoView中:android:foregroundGravity=”center”
下面是代碼啦
public class VideoActivity extends Activity {
private VideoView vv;
private int k;
//手勢
private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_video);
vv = (VideoView) findViewById(R.id.vv);
MediaController mediaController=new MediaController(this);
vv.setMediaController(mediaController);
mediaController.setMediaPlayer(vv);
Intent intent =getIntent();
String url=intent.getStringExtra("playurl");
vv.setVideoPath(url);
vv.requestFocus();
vv.start();
//返回上一頁
vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
finish();
}
});
//據說並不好用,需要和onTouchEvent配合使用
setGestureDetector();
}
//觸摸(觸摸事件)
@Override
public boolean onTouchEvent(MotionEvent event) {
// //手指抬起
// if(event.getAction()==MotionEvent.ACTION_UP){
// Log.d("==g==","up");
// }
// //手指按下
// if(event.getAction() == MotionEvent.ACTION_DOWN){
// Log.d("==g==","down");
// Log.d("==g==", "down" + event.getX());
// Log.d("==g==", "down" + event.getY());
//
// }
// //手指移動
// if(event.getAction() == MotionEvent.ACTION_MOVE){
// Log.d("==g==","move");
// }
//類的監聽,完成解析
return gestureDetector.onTouchEvent(event);
}
//手勢方法
public void setGestureDetector(){
gestureDetector =new GestureDetector(
new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
//滾動MotionEvent e1 1.手勢起點事件
// MotionEvent e2 2.手勢終點
//distanceX 3.x軸方向上移動的速度/每秒
// distanceY 4.Y軸方向上移動的速度/每秒
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if(e1.getY()-e2.getY()>0.5&&Math.abs(distanceY)>0.5){
if(e1.getX()>500){
setLightness(30);
} else{
setAudio(1);
}
}
if(e1.getY()-e2.getY()<0.5&&Math.abs(distanceY)>0.5){
Log.d("==g==", e1.getY() + "");
if(e1.getX()>500){
setLightness(-30);
}else{
setAudio(-1);
}
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
}
//拋的動作
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
}
);
}
//物理鍵按下
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
//物理鍵抬起
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return super.onKeyUp(keyCode, event);
}
//軌跡球
@Override
public boolean onTrackballEvent(MotionEvent event) {
return super.onTrackballEvent(event);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d("==d==", ""+newConfig.orientation);
}
//改變屏幕亮度
public void setLightness(float lightness){
WindowManager.LayoutParams layoutParams =getWindow().getAttributes();
//屏幕的亮度,最大是255
layoutParams.screenBrightness =layoutParams.screenBrightness+lightness/255f;
if(layoutParams.screenBrightness>1){
layoutParams.screenBrightness=1;
}else if(layoutParams.screenBrightness<0.2){
layoutParams.screenBrightness=0.2f;
}
getWindow().setAttributes(layoutParams);
}
//加減音量
public void setAudio(int volume){
AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
//當前音量
k = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
//最大音量
int max =audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
Log.d("==d==", "" + max);
Log.d("==d==", "" + k);
k=k+volume;
if(k>=0&&k<=max){
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,k,AudioManager.FLAG_PLAY_SOUND);
}else {
return;
}
//audioManager.adjustVolume(i+volume,AudioManager.FLAG_PLAY_SOUND);
}
}
下面是布局:
視頻截圖

Android中的文件下載——DownLoadManager
一、問題概述 在android開發中,經常會使用到文件下載的功能,比如app版本更新等。在api level 9之後,android系統為我們提供了DownLoa
微信透明頭像怎麼制作 微信頭像尺寸是多少
微信聊天時,突然發現自己的很多好友頭像都是透明的,感覺好高大上的樣子,微信透明頭像怎麼制作?下面小編就來告訴大家,感興趣的童鞋一起來看看吧!【微信透明頭像制
Android Tab -- 使用Fragment、FragmentManager來實現
效果: 代碼:https://github.com/ldb-github/Layout_Tab1、布局:使用LinearLayout布置標簽;再使用FrameL
Android提供的系統服務之--AudioManager(音頻管理器)
Android提供的系統服務之--AudioManager(音頻管理器)