技术标签: pdf批注demo pdf批注 pdf笔记 android Android
implementation ‘com.lonelypluto:pdf-viewer:1.0.5’
package com.example.myapplication.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.artifex.mupdfdemo.OutlineItem;
import com.example.myapplication.R;
/**
* @Description: 文件目录adapter
* @author: ZhangYW
* @time: 2019/1/22 11:17
*/
public class OutlineAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private OutlineItem mList[];
public OutlineAdapter(Context context, OutlineItem mList[]){
this.mContext = context;
this.mList = mList;
}
/**
* 渲染具体的ViewHolder
* @param parent ViewHolder的容器
* @param viewType 一个标志,我们根据该标志可以实现渲染不同类型的ViewHolder
* @return
*/
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.outline_item,parent,false);
return new OutlineViewHolder(itemView);
}
/**
* 绑定ViewHolder的数据。
* @param holder
* @param position 数据源list的下标
*/
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
OutlineItem bean = mList[position];
if (null == bean)
return;
OutlineViewHolder viewHolder = (OutlineViewHolder) holder;
int level = bean.level;
if (level > 8) level = 8;
String space = "";
for (int i=0; i<level;i++)
space += " ";
String text = space + bean.title;
viewHolder.tv_title.setText(text);
viewHolder.tv_page.setText(String.valueOf(bean.page+1));
}
@Override
public int getItemCount() {
return mList.length;
}
public static class OutlineViewHolder extends RecyclerView.ViewHolder{
public TextView tv_title;
public TextView tv_page;
public OutlineViewHolder(View itemView){
super(itemView);
tv_title = (TextView) itemView.findViewById(R.id.outline_item_title);
tv_page = (TextView) itemView.findViewById(R.id.outline_item_page);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:background="?selectableItemBackground"
>
<TextView
android:id="@+id/outline_item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/outline_item_page"
android:maxLines="1"
android:layout_centerVertical="true"
android:paddingStart="8dp"
android:text=""
android:textColor="@color/rv_item_line_tv"
android:textSize="18sp"
/>
<TextView
android:id="@+id/outline_item_page"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/outline_item_title"
android:layout_alignBottom="@+id/outline_item_title"
android:layout_alignParentEnd="true"
android:paddingEnd="8dp"
android:text=""
android:textColor="@color/rv_item_line_tv"
android:textSize="18sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/outline_item_title"
android:layout_marginTop="10dp"
android:background="@color/rv_item_line_bg"
/>
</RelativeLayout>
package com.example.myapplication.widget;
import android.support.v4.view.GestureDetectorCompat;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
/**
* RecyclerView监听事件
*/
public abstract class OnRecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private GestureDetectorCompat mGestureDetector;
private RecyclerView recyclerView;
public OnRecyclerItemClickListener(RecyclerView recyclerView) {
this.recyclerView = recyclerView;
mGestureDetector = new GestureDetectorCompat(recyclerView.getContext(), new ItemTouchHelperGestureListener());
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
mGestureDetector.onTouchEvent(e);
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
mGestureDetector.onTouchEvent(e);
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
private class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapUp(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null) {
RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child);
onItemClick(vh);
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null) {
RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child);
onItemLongClick(vh);
}
}
}
public abstract void onItemClick(RecyclerView.ViewHolder vh);
public abstract void onItemLongClick(RecyclerView.ViewHolder vh);
}
package com.example.myapplication.activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.artifex.mupdfdemo.OutlineActivityData;
import com.artifex.mupdfdemo.OutlineItem;
import com.example.myapplication.R;
import com.example.myapplication.adapter.OutlineAdapter;
import com.example.myapplication.widget.OnRecyclerItemClickListener;
/**
* @Description: 目录
* @author: ZhangYW
* @time: 2019/3/8 10:29
*/
public class OutlineActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private OutlineAdapter adapter;
private OutlineItem mItems[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_outline);
initData();
initView();
setListener();
}
/**
* 初始化数据
*/
private void initData(){
mItems = OutlineActivityData.get().items;
}
/**
* 初始化布局
*/
private void initView(){
adapter = new OutlineAdapter(this,mItems);
recyclerView = (RecyclerView)findViewById(R.id.outline_rv);
recyclerView.setHasFixedSize(true);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);//HORIZONTAL 水平
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(adapter);
}
/**
* 设置点击事件
*/
private void setListener(){
recyclerView.addOnItemTouchListener(new OnRecyclerItemClickListener(recyclerView) {
@Override
public void onItemClick(RecyclerView.ViewHolder vh) {
OutlineActivityData.get().position = vh.getLayoutPosition();
setResult(mItems[vh.getLayoutPosition()].page);
finish();
}
@Override
public void onItemLongClick(RecyclerView.ViewHolder vh) {
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.artifex.mupdfdemo.activity.OutlineActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/outline_rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
package com.example.myapplication.activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewAnimator;
import com.artifex.mupdfdemo.Annotation;
import com.artifex.mupdfdemo.Hit;
import com.artifex.mupdfdemo.MuPDFAlert;
import com.artifex.mupdfdemo.MuPDFCore;
import com.artifex.mupdfdemo.MuPDFPageAdapter;
import com.artifex.mupdfdemo.MuPDFReaderView;
import com.artifex.mupdfdemo.MuPDFReaderViewListener;
import com.artifex.mupdfdemo.MuPDFView;
import com.artifex.mupdfdemo.OutlineActivityData;
import com.artifex.mupdfdemo.OutlineItem;
import com.artifex.mupdfdemo.ReaderView;
import com.artifex.mupdfdemo.SavePdf;
import com.artifex.mupdfdemo.SearchTask;
import com.artifex.mupdfdemo.SearchTaskResult;
import com.artifex.mupdfdemo.widget.VDHDeepLayout;
import com.example.myapplication.R;
import com.lonelypluto.pdflibrary.utils.SharedPreferencesUtil;
import java.util.concurrent.Executor;
public class AllPDFActivity extends AppCompatActivity {
private static final String TAG = AllPDFActivity.class.getSimpleName();
private final int OUTLINE_REQUEST = 0;
private String filePath = Environment.getExternalStorageDirectory() + "/pdf_t1.pdf"; // 文件路径
// private String filePath = Environment.getExternalStorageDirectory() + "/t"; // 文件路径
private String fileName;// 文件名
private AlertDialog.Builder mAlertBuilder;
static private AlertDialog.Builder gAlertBuilder;
private MuPDFCore muPDFCore;// 加载mupdf.so文件
private MuPDFReaderView muPDFReaderView;// 显示pdf的view
private boolean mAlertsActive = false;
private AsyncTask<Void, Void, MuPDFAlert> mAlertTask;
private AlertDialog mAlertDialog;
// tools
private ViewAnimator mTopBarSwitcher;// 工具栏动画
private ImageButton mLinkButton;// 超链接
private ImageButton mOutlineButton;// 目录
private ImageButton mSearchButton;// 搜索
private ImageButton mAnnotButton;// 注释
// tools 搜索框
private EditText mSearchText;// 搜索内容输入框
private ImageButton mSearchBack;// 搜索内容上一个
private ImageButton mSearchFwd;// 搜索内容下一个
// tools 注释类型
private TextView mAnnotTypeText;// 注释类型
// tools 底部布局
private TextView mPageNumberView;// 页数
private SeekBar mPageSlider;// 底部拖动条
private int mPageSliderRes;// 拖动条的个数
private boolean mButtonsVisible;// 是否显示工具栏
private TopBarMode mTopBarMode = TopBarMode.Main;// 工具栏类型
private AcceptMode mAcceptMode;// 工具栏注释类型
private SearchTask mSearchTask;// 搜索线程
private boolean mLinkHighlight = false;// 是否高亮显示
private Button btn_change_hv;// 切换横竖显示
private boolean ischangeHV = false;// 横竖切换
private Button btn_linkhighlightcolor;// 设置超链接颜色
private Button btn_searchtextcolor;// 设置搜索文字颜色
private Button btn_paintcolor;// 设置画笔颜色
private Button btn_paintstrokewidth;// 设置画笔粗细
private Button btn_sign;// 电子签章
private Button btn_save;// 保存
private VDHDeepLayout vdhDeepLayout;
private ImageView iv_sign;
private ImageView iv_test;
private SavePdfTask savePdfTask;
/*
* 用于存储的异步,并上传更新
* */
class SavePdfTask extends AsyncTask {
SavePdf savePdf;
public SavePdfTask(SavePdf savePdf) {
this.savePdf = savePdf;
}
@Override
protected Object doInBackground(Object[] params) {
savePdf.addText();
return null;
}
@Override
protected void onPostExecute(Object o) {
Log.e(TAG, "存储完成");
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_pdf);
initView();
}
private void initView() {
SharedPreferencesUtil.init(getApplication());
muPDFReaderView = (MuPDFReaderView)findViewById(R.id.open_pdf_mupdfreaderview);
initToolsView();
mAlertBuilder = new AlertDialog.Builder(this);
// keep a static copy of this that other classes can use
gAlertBuilder = mAlertBuilder;
String path = filePath;
// 通过MuPDFCore打开pdf文件
muPDFCore = openFile(path);
// 搜索设为空
SearchTaskResult.set(null);
// 判断如果core为空,提示不能打开文件
if (muPDFCore == null) {
AlertDialog alert = mAlertBuilder.create();
alert.setTitle(com.lonelypluto.pdflibrary.R.string.cannot_open_document);
alert.setButton(AlertDialog.BUTTON_POSITIVE, getString(com.lonelypluto.pdflibrary.R.string.dismiss),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alert.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
finish();
}
});
alert.show();
return;
}
createUI();
//切换横竖显示
btn_change_hv = (Button)findViewById(R.id.btn_change_hv);
btn_change_hv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ischangeHV) {
muPDFReaderView.setHorizontalScrolling(ischangeHV);
btn_change_hv.setText("横");
ischangeHV = false;
} else {
muPDFReaderView.setHorizontalScrolling(ischangeHV);
btn_change_hv.setText("竖");
ischangeHV = true;
}
}
});
// 改变超链接颜色
btn_linkhighlightcolor = (Button)findViewById(R.id.btn_linkhighlightcolor);
btn_linkhighlightcolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLinkHighlightColor(ContextCompat.getColor(AllPDFActivity.this, com.lonelypluto.pdflibrary.R.color.link_bg));
}
});
// 改变搜索文字颜色
btn_searchtextcolor = (Button)findViewById(R.id.btn_searchtextcolor);
btn_searchtextcolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setSearchTextColor(ContextCompat.getColor(AllPDFActivity.this, com.lonelypluto.pdflibrary.R.color.search_bg));
}
});
// 设置画笔颜色
btn_paintcolor = (Button)findViewById(R.id.btn_set_paint_color);
btn_paintcolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int c = ContextCompat.getColor(AllPDFActivity.this, com.lonelypluto.pdflibrary.R.color.rv_item_line_bg);
Log.e(TAG, "color = " + c);
setColor(c);
setInkColor(0xFF0000FF);
}
});
// 设置画笔粗细
btn_paintstrokewidth = (Button)findViewById(R.id.btn_set_paint_strokewidth);
btn_paintstrokewidth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setPaintStrockWidth(20.0f);
}
});
// 电子签章
btn_sign = (Button)findViewById(R.id.btn_sign);
btn_sign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG, "btn_sign");
vdhDeepLayout.setVisibility(View.VISIBLE);
}
});
// 保存
btn_save = (Button)findViewById(R.id.btn_save);
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG, "btn_save");
String in_path = filePath;
String out_path = in_path.substring(0, in_path.length() - 4) + "_t2.pdf";
SavePdf savePdf = new SavePdf(in_path, out_path);
savePdf.setScale(muPDFReaderView.getCurrentScale());
savePdf.setPageNum(muPDFReaderView.getDisplayedViewIndex() + 1);
savePdf.setWidthScale(1.0f * muPDFReaderView.getScaleX() / muPDFReaderView.getDisplayedView().getWidth());//计算宽偏移的百分比
savePdf.setHeightScale(1.0f * muPDFReaderView.getScaleY() / muPDFReaderView.getDisplayedView().getHeight());//计算长偏移的百分比
Log.e(TAG, "scaleX = " + muPDFReaderView.getScaleX() + " " + muPDFReaderView.getDisplayedView().getWidth());
savePdf.setWH(iv_sign.getX(), iv_sign.getY());
// savePdf.setWidthScale(0);
// savePdf.setHeightScale(0);
//计算分辨率密度
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
float density = metric.density;
savePdf.setDensity(density);
Bitmap bitmap = getBitmap(AllPDFActivity.this, com.lonelypluto.pdflibrary.R.mipmap.ic_launcher);
savePdf.setBitmap(bitmap);
// Bitmap bitmap = Bitmap.createBitmap(vdhDeepLayout.getWidth(), vdhDeepLayout.getHeight(),
// Bitmap.Config.ARGB_8888);
// Canvas canvas = new Canvas(bitmap);
// vdhDeepLayout.draw(canvas);
// savePdf.setBitmap(bitmap);
Log.e(TAG, "iv_p = " + iv_sign.getX() + " " + iv_sign.getY());
Log.e(TAG, "屏幕 = " + vdhDeepLayout.getWidth() + " " + vdhDeepLayout.getHeight());
savePdfTask = new SavePdfTask(savePdf);
savePdfTask.execute();
}
});
vdhDeepLayout = (VDHDeepLayout)findViewById(R.id.VDHDeepLayout);
iv_sign = (ImageView)findViewById(R.id.iv_sign);
iv_test = (ImageView)findViewById(R.id.iv_test);
}
private static Bitmap getBitmap(Context context,int vectorDrawableId) {
Bitmap bitmap=null;
if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP){
Drawable vectorDrawable = context.getDrawable(vectorDrawableId);
bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
vectorDrawable.draw(canvas);
}else {
bitmap = BitmapFactory.decodeResource(context.getResources(), vectorDrawableId);
}
return bitmap;
}
public void setColor(int color) {
int red = (color & 0xff0000) >> 16;
int green = (color & 0x00ff00) >> 8;
int blue = (color & 0x0000ff);
Log.e(TAG, "r = " + red + " g = " + green + " b = " + blue);
}
/**
* 初始化工具栏
*/
private void initToolsView() {
mTopBarSwitcher = (ViewAnimator) findViewById(R.id.switcher);
mLinkButton = (ImageButton) findViewById(R.id.linkButton);
mAnnotButton = (ImageButton) findViewById(R.id.reflowButton);
mOutlineButton = (ImageButton) findViewById(R.id.outlineButton);
mSearchButton = (ImageButton) findViewById(R.id.searchButton);
mSearchText = (EditText) findViewById(R.id.searchText);
mSearchBack = (ImageButton) findViewById(R.id.searchBack);
mSearchFwd = (ImageButton) findViewById(R.id.searchForward);
mAnnotTypeText = (TextView) findViewById(R.id.annotType);
mPageNumberView = (TextView) findViewById(R.id.pageNumber);
mPageSlider = (SeekBar) findViewById(R.id.pageSlider);
mTopBarSwitcher.setVisibility(View.INVISIBLE);
mPageNumberView.setVisibility(View.INVISIBLE);
mPageSlider.setVisibility(View.INVISIBLE);
}
/**
* 打开文件
* @param path 文件路径
* @return
*/
private MuPDFCore openFile(String path) {
int lastSlashPos = path.lastIndexOf('/');
fileName = new String(lastSlashPos == -1
? path
: path.substring(lastSlashPos + 1));
Log.e(TAG, "filename = " + fileName);
Log.e(TAG, "Trying to open " + path);
try {
muPDFCore = new MuPDFCore(this, path);
// 新建:删除旧的目录数据
OutlineActivityData.set(null);
} catch (Exception e) {
Log.e(TAG, "openFile catch:" + e.toString());
return null;
} catch (OutOfMemoryError e) {
// out of memory is not an Exception, so we catch it separately.
Log.e(TAG, "openFile catch: OutOfMemoryError " + e.toString());
return null;
}
return muPDFCore;
}
private void createUI() {
if (muPDFCore == null)
return;
// Set up the page slider
int smax = Math.max(muPDFCore.countPages() - 1, 1);
mPageSliderRes = ((10 + smax - 1) / smax) * 2;
// Now create the UI.
// First create the document view
muPDFReaderView.setListener(new MuPDFReaderViewListener() {
@Override
public void onMoveToChild(int i) {
if (muPDFCore == null)
return;
mPageNumberView.setText(String.format("%d / %d", i + 1,
muPDFCore.countPages()));
mPageSlider.setMax((muPDFCore.countPages() - 1) * mPageSliderRes);
mPageSlider.setProgress(i * mPageSliderRes);
}
@Override
public void onTapMainDocArea() {
if (!mButtonsVisible) {
showButtons();
} else {
if (mTopBarMode == TopBarMode.Main)
hideButtons();
}
}
@Override
public void onDocMotion() {
hideButtons();
}
@Override
public void onHit(Hit item) {
switch (mTopBarMode) {
case Annot:
if (item == Hit.Annotation) {
showButtons();
mTopBarMode = TopBarMode.Delete;
mTopBarSwitcher.setDisplayedChild(mTopBarMode.ordinal());
}
break;
case Delete:
mTopBarMode = TopBarMode.Annot;
mTopBarSwitcher.setDisplayedChild(mTopBarMode.ordinal());
// fall through
default:
// Not in annotation editing mode, but the pageview will
// still select and highlight hit annotations, so
// deselect just in case.
MuPDFView pageView = (MuPDFView) muPDFReaderView.getDisplayedView();
if (pageView != null)
pageView.deselectAnnotation();
break;
}
}
});
muPDFReaderView.setAdapter(new MuPDFPageAdapter(this, muPDFCore));
// 设置view的背景色
muPDFReaderView.setBackgroundColor(ContextCompat.getColor(this, com.lonelypluto.pdflibrary.R.color.muPDFReaderView_bg));
mSearchTask = new SearchTask(this, muPDFCore) {
&
文章浏览阅读846次,点赞12次,收藏19次。博主介绍:CSDN深耕的技术专家、博客专家、有着常年的工作经验、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战精彩专栏 推荐订阅2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐JAVA精品实战案例《500套》微信小程序项目精品案例《500套》文末获取源码+数据库。
文章浏览阅读1.4w次。JAVA语言是一种介于解释型语言和编译型语言之间的面向对象语言,属于高级混合型语言。Java代码需要先编译成class,然后交给JVM执行。而JVM在执行class代码时是解释执行的,所以Java不是一门单纯的编译型或解释型语言,它是一门混合型语言。它是集编译型语言和解释型语言的优势于一身,即执行速度较快,只需编写和编译一次,从而逐步发展成了一门高级语言。Java语言是一个支持网络计算的面向对象程..._java属于哪种语言
文章浏览阅读4.7k次。让我们首先创建一个浮点数组列表-ArrayListarrList=newArrayList();arrList.add(5.2f);arrList.add(10.3f);arrList.add(15.3f);arrList.add(20.4f);现在,将float数组列表转换为float数组。首先,我们为浮点数组设置了相同的大小,即元素数相同。之后,我们分配了每个值-fina..._float转float数组
文章浏览阅读2.3w次,点赞10次,收藏12次。那是因为你没有破解,你只是选择了试用30天接下来我讲解一下如何破解:先去网上下载一个13.0破解器,按照说明操作即可需要一个licence.data文件把里面的xxxxxx地方用quartus软件tools,licence那儿的第一个字符串去代替即可最后在quartus软件里面指定这个licence的路径即可,就会出现能够用到2035年,那就是破解成功了..._quartus编译后没有sof
文章浏览阅读103次。2019独角兽企业重金招聘Python工程师标准>>> ...
文章浏览阅读1.8k次。.net DropDownList默认选择指定的值_.net dropdownlist 默认
文章浏览阅读1.1w次,点赞11次,收藏14次。vue代码如下:<el-tabs v-model="activeName" @tab-click="handleClick" stretch> <el-tab-pane label="示例1" name="first"> <el-table 此处省略好多代码></el-table> </el-tab-pane> <el-tab-pane label="示例2" name="second"> <el-table 此处_el-tabs居中
文章浏览阅读3.8k次。2009-12-10 下午5:05How to get JBoss and Apache to work togetherI have JBoss 5 loaded on a Win2k8 box along with Apache 2.2.14 and Coldfusion 9. I believe I'm having issues with Apache
文章浏览阅读1.5k次,点赞3次,收藏3次。1,在计算机中,最适合进行数字加减运算的数字编码是 (1) ,最适合表示浮点数阶码的数字编码是 (2)(1)A.原码 B.反码 C补码 D.移码(2)A.原码 B.反码 C补码 D.移码试题解析: 补码的加法和减法是相同的。补码-加法与减法运算 移码的正数大于负数,比较方便于阶码的比较。移码(又叫增码)是符号位取反的补码,一般用指数的移码减去..._两个公司希望通过internet进行安全通信,保证从信息源到目的地之间的数据传输以密
文章浏览阅读106次。import java.util.Scanner;/*** 华为机试 自动售货机* 不知道对错* @author qxl**/public class Shop {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int price1 = 2, s_count1 = 5;int price2 = ..._自动售货机开源项目有哪些
文章浏览阅读772次。MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。总而言之,客户端在发送完ACK报文段之后,继续等待2MSL时间,如果发给服务端的ACK报文段丢失了,服务端重发的FIN报文段在也一定能在这个时间内到达客户端。_客户端等待2msl
文章浏览阅读2.1w次,点赞46次,收藏423次。精彩专栏推荐 【作者主页——获取更多优质源码】 【web前端期末大作业——毕设项目精品实战案例(1000套)】1 网页简介:此作品为学生个人主页网页设计题材,HTML+CSS 布局制作,web前端期末大作业,大学生网页设计作业源码,这是一个不错的网页制作,画面精明,代码为简单学生水平, 非常适合初学者学习使用。2.网页编辑:网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Web......_html商城代码