为什么在点击按钮创建PDF之前会出现进度条? 我希望你能帮助我。
我希望在创建PDF文件时出现进度条。
我无法在线程中插入createPDF()和viewPDF()以在创建PDF期间显示进度条....
public class TwoFragment extends android.support.v4.app.Fragment {
private View v;
Intent chooser=null;
String myInt="";
String ciao="";
private String string="";
private ProgressBar pdfProgress;
public TwoFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_two, container, false);
Button mButton = (Button) rootView.findViewById(R.id.newbutton);
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//sendemail();
pdfProgress.setVisibility(View.VISIBLE);
createPDF();
pdfProgress.setVisibility(View.GONE);
viewPDF();
}
});
TextView titolo3 = (TextView)rootView.findViewById(R.id.result);
TextView titolo2 = (TextView)rootView.findViewById(R.id.result2);
TextView titolo4 = (TextView)rootView.findViewById(R.id.resultpizze);
pdfProgress = (ProgressBar)rootView.findViewById(R.id.progressbar);
//pdfProgress.setVisibility(View.GONE);
//TextView titolo = (TextView)rootView.findViewById(R.id.quantità3);
Bundle bundle2=getArguments();
if(bundle2 != null){
string = bundle2.getString("scelta2");
titolo3.setText(string);
}
/* Bundle bundle2=getArguments();
if(bundle2 != null){
// myInt = bundle2.getString("scelta2",myInt);
cacca=bundle2.getString("result",null);
//cacca=myInt;
// Log.d("ciao",cacca);
titolo3.setText(cacca);
}*/
//titolo3.setText(myInt);
/* Bundle bundle3=getArguments();
if(bundle3 != null){
// String myInt3 = bundle3.getString("totalebirre", null);
// cazzo2=Integer.parseInt(myInt3);
int cazzo2=bundle3.getInt("totalebirre");
titolo2.setText(String.valueOf(cazzo2));
}
Bundle bundle=getArguments();
if(bundle != null){
// String myInt2 = bundle2.getString("totalepizze", null);
// cazzo=Integer.parseInt(myInt2);
//titolo2.setText(myInt2);
String string=bundle.getString("scelta3", null);
titolo4.setText(string);
}
*/
return rootView;
}
/* public void sendemail(){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setData(Uri.parse("mailto:"));
String[] to={"marco_marcoletto@hotmail.it"};
intent.putExtra(Intent.EXTRA_EMAIL,to);
intent.putExtra(Intent.EXTRA_SUBJECT, "ciao");
intent.putExtra(Intent.EXTRA_TEXT, "zao");
intent.setType("message/rfc822");
chooser=intent.createChooser(intent,"manda email");
startActivity(chooser);
}*/
//@TargetApi(Build.VERSION_CODES.M)
public void createPDF() {
Document doc = new Document();
try {
String path = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/droidText";
File dir = new File(path);
if (!dir.exists())
dir.mkdirs();
Log.d("PDFCreator", "PDF Path: " + path);
//File file = new File(dir, "sample.pdf");
File file = new File(dir, "salve.pdf");
FileOutputStream fOut = new FileOutputStream(file);
PdfWriter.getInstance(doc, fOut);
// open the document
doc.open();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeResource(getContext()
.getResources(), R.drawable.androtuto);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
Image myImg = Image.getInstance(stream.toByteArray());
myImg.setAlignment(Image.MIDDLE);
// add image to document
doc.add(myImg);
Paragraph p1 = new Paragraph(string);
Font paraFont = new Font(Font.COURIER);
p1.setAlignment(Paragraph.ALIGN_CENTER);
p1.setFont(paraFont);
// add paragraph to document
doc.add(p1);
Paragraph p2 = new Paragraph("Bonjour Android Tuto");
Font paraFont2 = new Font(Font.COURIER, 14.0f, Color.GREEN);
p2.setAlignment(Paragraph.ALIGN_CENTER);
p2.setFont(paraFont2);
doc.add(p2);
stream = new ByteArrayOutputStream();
bitmap = BitmapFactory.decodeResource(getContext()
.getResources(), R.drawable.android);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
myImg = Image.getInstance(stream.toByteArray());
myImg.setAlignment(Image.MIDDLE);
// add image to document
doc.add(myImg);
// set footer
Phrase footerText = new Phrase("Pied de page ");
HeaderFooter pdfFooter = new HeaderFooter(footerText, false);
doc.setFooter(pdfFooter);
} catch (DocumentException de) {
// Log.e("PDFCreator", "DocumentException:" + de);
Log.e("PDFCreator", "DocumentException:" + de.getMessage());
} catch (IOException e) {
// Log.e("PDFCreator", "ioException:" + e);
Log.e("PDFCreator", "DocumentException:" + e.getMessage());
} finally {
doc.close();
}
}
public void viewPDF(){
String path = "/sdcard/droidText/salve.pdf";
File targetFile = new File(path);
Uri targetUri = Uri.fromFile(targetFile);
Intent intent;
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(targetUri, "application/pdf");
startActivity(intent);
}
}
XML:
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ProgressBar
android:id="@+id/progressbar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_centerInParent="true"
/>
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true" >
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!--<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">-->
<!-- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/result2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:capitalize="characters"
android:layout_centerVertical="false"
android:layout_marginTop="30dp"
android:textSize="30dp"/>
<TextView
android:id="@+id/quantità2"
android:layout_width="100dp"
android:layout_height="500dp"
android:layout_centerVertical="false"
android:textSize="30dp"
android:layout_marginTop="30dp" />
</LinearLayout>-->
<LinearLayout
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="false"
android:textSize="30dp"
android:layout_marginTop="0dp"/>
<TextView
android:id="@+id/resultpizze"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/content_main3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--<TextView
android:id="@+id/resultpizze"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="false"
android:layout_marginTop="30dp"
android:textSize="30dp"/>-->
</LinearLayout>
<LinearLayout
android:id="@+id/content_main2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/result2"
android:layout_marginTop="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30sp"
/>
<!-- <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Manda Email"
android:id="@+id/newbutton"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="300dp" />
-->
</LinearLayout>
<!--</ScrollView>-->
<Button
android:id="@+id/newbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_gravity="center_horizontal"
android:onClick="sendemail"
android:text="Manda Email">
</Button>
</LinearLayout>
</ScrollView>
</RelativeLayout>
答案 0 :(得分:1)
为了在创建pdf时查看进度,您必须在新主题中运行createPDF()
。但是您想在创建pdf时更新GUI。为此,您可以使用AsyncTask
。
private class MyAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// This runs in new thread!!!
// Always run long operations in another thread, so GUI will never be blocked
createPDF();
return null;
}
@Override
protected void onPostExecute(Void v) {
// This runs in MAIN thread, after the job's done.
// You always have to update gui from main thread
pdfProgress.setVisibility(View.GONE);
}
}
将其插入您的mButton clicklistener:
MyAsyncTask myTask = new MyAsyncTask();
myTask.execute();
答案 1 :(得分:0)
步骤1 - 声明一个全局变量 - private ProgressBar pdfProgress;
步骤2 - 在各自的layour.xml(fragment_two)中创建一个进度条小部件,并为其指定一个ID。
步骤3 - 在TwoFragment的onCreate()方法中,在定义rootView之后立即编写此代码。 pdfProgress =(ProgressBar)rootView.findViewById(R.id。&#34;您的进度条ID&#34;);
第4步 - 就在createPDF()之上;写这个 - pdfProgress.setVisibility(View.VISIBLE);
第5步 - 在createPDF()下面;写这个 - pdfProgress.setVisibility(View.GONE);
**
更新的答案
**
在TwoFragment中尝试此代码 - onClick() -
var greeter = {
Name : "",
Sayhello: function sayhello(){
console.log("hello");
}
}
fragment_two.xml(你的片段布局xml)必须包含一个如下所示的进度条 - (你也可以添加drawables,可能想看一个教程)
Button mButton = (Button) rootView.findViewById(R.id.newbutton);
pdfProgress.setVisibility(View.GONE);
ProgressBar pdfProgress = (ProgressBar)
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//sendemail();
pdfProgress.setVisibility(View.VISIBLE);
createPDF();
pdfProgress.setVisibility(View.GONE);
viewPDF();
}
});