本篇符合分而治之的想法。
首先先实现vedioview。
可以通过触摸事件对他进行缩放。
实现一个dialog
可以根据触摸事件上下滑动
然后想办法联动如图所示
代码随后附带,这是我完成类似效果的一个过程。
package com.mycompany.myapp8;
import android.os.*;
import android.view.*;
import androidx.appcompat.app.*;
import androidx.appcompat.widget.*;
import com.google.android.material.floatingactionbutton.*;
import com.google.android.material.snackbar.*;
import android.widget.*;
import android.view.View.*;
public class MainActivity extends AppCompatActivity {
donghua hh;
Display display;
Object cc;
Object aa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
display= getWindowManager().getDefaultDisplay();
cc=display.getWidth();
aa=display.getHeight();
hh=new donghua(this);
setContentView(hh);
// Toolbar toolbar = findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);
//// FloatingActionButton fab = findViewById(R.id.fab);
/* fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick( View view) {
new Thread(){
public void run(){
Looper.prepare();
// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
// .setAction("Action", null).show();
Toast.makeText(MainActivity.this,"成功了",Toast.LENGTH_LONG).show();
Looper.loop();
}
}.start();
}
});*/
}
/* @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}*/
@Override
public boolean onTouchEvent(MotionEvent event)
{
float x=event.getX();
int m;
int n;
float y=event.getY();
Boolean b=true;
if(event.getAction()==MotionEvent.ACTION_MOVE){
// hh.setScaleY(/*(y-event.getY())/(float)aa*(float)aa*/0.5f);
// hh.setScaleX(/*(y-event.getY())/(float)aa*(float)cc*/0.5f);
// hh.setPivotX((float)cc/2);
// hh.setPivotY(0);
// hh.invalidate();*/
m=MeasureSpec.makeMeasureSpec((int)((int)aa-(y-event.getY())),MeasureSpec.EXACTLY);
n=MeasureSpec.makeMeasureSpec((int)((int)cc-(x-event.getX())),MeasureSpec.EXACTLY);
hh.onMeasure(m,n);
hh.invalidate();
Toast.makeText(MainActivity.this,"成功了"+String.valueOf(m)/*+" "+String.valueOf(cc)*/,Toast.LENGTH_SHORT).show();
}else{
b=false;
}
// TODO: Implement this method
return false;
}
}
第一步就失败了…我勒个去什么原因